【发布时间】:2021-11-12 10:53:28
【问题描述】:
可重复设置
我有一个 n 对索引的数组:
indexarray=\
np.array([[0,2,4,6],
[1,3,5,7]])
我还有一个二维数组:
zeros = np.zeros((10,9))
和 n 个值的列表:
values = [1,2,3,4]
我想将values 列表中的每个第 k 个元素添加到 zeros 列表中的索引等于第 k 个索引对的元素
解决方案
# works, but for loop is not suitable for real-world use-case
for index, (row, col) in enumerate(indexarray.T):
zeros[row, col] = values[index]
想象一下我得到了什么:
plt.imshow(zeros)
结果符合预期。
如何在没有迭代的情况下做到这一点?
类似但不同的问题:
- Index 2D numpy array by a 2D array of indices without loops :这里的输出是索引对数组,而不是二维数组,就像这里一样。
- Fill 2D numpy array from three 1D numpy arrays : 设置更复杂,他们从一维数组创建一个二维数组,不像这里,我们已经有一个二维数组
- numpy arrays: filling and extracting data quickly : 设置更复杂,不要从二维数组开始
- How to convert List of Lists of Tuples- pairs (index,value) into 2D numpy array : 目的不同,不能避免 for 循环
【问题讨论】:
-
rows, cols = indexarray[0], indexarray[1]; zeros[rows, cols] = values? -
哇,真不敢相信我错过了 :) 谢谢!
-
你会重复索引吗?你需要把它们加在一起吗?
-
我个人不需要,但未来的用户可能会发现这个问题;如果您愿意,也可以随意添加涵盖该案例的答案 - 我手头的问题已解决。