【发布时间】:2019-12-13 20:32:05
【问题描述】:
我有一个二维数组,我有一些数字要添加到一些单元格中。我想对操作进行矢量化以节省时间。问题是当我需要向同一个单元格添加多个数字时。在这种情况下,矢量化代码仅添加最后一个。 '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] 应该递增两次:1 加 2,1 加 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)
标签: python numpy vectorization