根据索引数组求和值

Bil*_*ill 2 python arrays numpy

我有两个相同维度的数组:

a = np.array([ 1,  1, 2,  0, 0, 1])
b = np.array([50, 51, 6, 10, 3, 2])
Run Code Online (Sandbox Code Playgroud)

我想b根据指数总结元素a.

i我想要的矩阵个元素将是所有值的总和b[j],使得a[j]==i.

所以结果应该是一个三维数组 [10 + 3, 50 + 51 + 2, 6]

有一个numpy方式来做到这一点?我有一些非常大的数组,我需要在多个维度上这样求和,所以不得不执行显式循环.

unu*_*tbu 10

numpy.bincount有一个weights参数可以满足您的需求:

In [36]: np.bincount(a, weights=b)
Out[36]: array([  13.,  103.,    6.])
Run Code Online (Sandbox Code Playgroud)