装配 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)
如何将 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)