装配 numpy 向量

Assembly numpy vector

如何将 numpy 数组 A 添加到 numpy 数组 B 的元素中,索引由索引数组 C 给出?

理想情况下,我可以写:

A=np.zeros(4,float)
B=np.array([1,2,3,4])
C=np.array([1,2,1,3])
A[C] +=B
print A

输出: [0, 4, 2, 4]

但它不起作用,因为(根据文档)A[C] 是一个副本。 (我只是想知道如果 C 中的索引只出现一次,为什么它实际上有效。)

我需要快速完成(对于大数组)。

看起来你的例子应该是

A = np.zeros(4, dtype=float)
B=np.array([1,2,3,4])
C=np.array([1,2,1,3])
A[C] += B
print A

如果是这样,那么您需要 numpy.add.at 而不是 +=add.at+= 做的事,但重复索引以您想要的方式处理。类似的结构适用于其他运营商,例如subtract.at 对于 -=.

numpy.add.at(A, C, B)