我想添加一个向量的值:
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype='d')
到另一个向量的值:
c = np.array([10, 10, 10], dtype='d')
在另一个数组给出的位置(大小相同a
,值为0 <= b[i] < len(c)
)
b = np.array([2, 0, 1, 0, 2, 0, 1, 1, 0, 2], dtype='int32')
用伪代码写这个很简单:
for I in range(b.shape[0]):
J = b[I]
c[J] += a[I]
像这样的东西,但是矢量化(c
的长度在实际情况下是几百个。)
c[0] += np.sum(a[b==0]) # 27 (10 + 1 + 3 + 5 + 8)
c[1] += np.sum(a[b==1]) # 25 (10 + 2 + 6 + 7)
c[2] += np.sum(a[b==2]) # 23 (10 + 0 + 4 + 9)
我最初的猜测是:
c[b] += a
但只有a
的最后一个值相加。