gpt4 book ai didi

python - 合并 numpy 数组列表并 reshape

转载 作者:行者123 更新时间:2023-11-28 22:33:58 27 4
gpt4 key购买 nike

我希望有人能在以下方面帮助我。我有 2 个数组列表,它们应该相互链接。每个列表代表一个特定的对象。 arr1arr2是该对象的属性。例如:

import numpy as np

arr1 = [np.array([1, 2, 3]), np.array([1, 2]), np.array([2, 3])]
arr2 = [np.array([20, 50, 30]), np.array([50, 50]), np.array([75, 25])]

数组相互链接,如 1 中所示在 arr1 , 第一个数组属于 20arr2第一个数组。我在此示例中寻找的结果是一个大小为 3,4 的 numpy 数组。 “列”代表 0、1、2、3(arr1 中的数字,加上 0),行填充 arr2 的相应值。当没有相应的值时,此单元格应为 0。示例:

array([[ 0, 20, 50, 30],
[ 0, 50, 50, 0],
[ 0, 0, 75, 25]])

我如何链接这两个数组列表并按照上例所示的所需格式重新塑造它们?

非常感谢!

最佳答案

这是一个几乎*矢量化的方法 -

lens = np.array([len(i) for i in arr1])

N = len(arr1)
row_idx = np.repeat(np.arange(N),lens)
col_idx = np.concatenate(arr1)

M = col_idx.max()+1
out = np.zeros((N,M),dtype=int)
out[row_idx,col_idx] = np.concatenate(arr2)

*:几乎是因为开始时的循环理解,但这在计算上应该可以忽略不计,因为它不涉及任何计算。

关于python - 合并 numpy 数组列表并 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com