是否可以根据另一个向量的整数值组合(添加)向量的值

ymm*_*mmx 5 python arrays grouping numpy

我正在尝试根据另一个向量的整数值添加向量的浮点值.

例如,如果我有:

import numpy as np
a = np.array([0.1,0.2,0.3,0.4,0.5,0.6,07.3,0.8,0.9,1.,1.2,1.4])
b = np.array([0,0,0,0,0,1,1,1,2,2,2,2]).astype(int)
Run Code Online (Sandbox Code Playgroud)

我想将a矢量的第一个值加在一起(因为b的5个第一个值是0),3个下一个值一起(因为b的3个下一个值是1),依此类推.所以最后我希望有

c = function(a,b)
c = [0.1+0.2+0.3+0.4+0.5,  0.6+7.3+0.8, 0.9+1.+1.2+1.4]
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 4

方法#1:我们可以使用np.bincountwithb作为 bin 和a权重数组 -

In [203]: np.bincount(b,a)
Out[203]: array([1.5, 8.7, 4.5])
Run Code Online (Sandbox Code Playgroud)

方法#2:另一种杠杆作用matrix-multiplication-

In [210]: (b == np.arange(b.max()+1)[:,None]).dot(a)
Out[210]: array([1.5, 8.7, 4.5])
Run Code Online (Sandbox Code Playgroud)