我有一个二维数组,需要对其中的某些单元格进行数字相加操作。为了节省时间,我希望将操作向量化。但当我需要向同一单元格添加多个数字时,问题就出现了。此时,向量化代码只会加上最后一个数字。
'a'是我的数组,'x'和'y'是我想要增加的单元格的坐标,'z'包含我想要添加的数字。
import numpy as np
a=np.zeros((4,4))
x=[1,2,1]
y=[0,1,0]
z=[2,3,1]
a[x,y]+=z
print(a)
如您所见,a[1,0]应该被增加两次:一次增加2,一次增加1。因此,期望的数组应该是:
[[0. 0. 0. 0.]
[3. 0. 0. 0.]
[0. 3. 0. 0.]
[0. 0. 0. 0.]]
但实际上我得到的是:
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 3. 0. 0.]
[0. 0. 0. 0.]]
使用 for 循环可以轻松解决这个问题,但我想知道是否可以正确地进行向量化操作。
a[x,y]
更像是一个索引选择器,而不是迭代器,因此它不会将索引(1,0)
相加。 - user7440787