2

我想做以下操作。但它喜欢直方图操作。

maxIndex = 6    
dst  =zeros((1,6))
a    =array([1,2,3,4,7,0,3,4,5,7])
index=array([1,1,1,3,3,4,4,5,5,5])

a的长度 ==index的长度,

for i in (a.size):
    dst[index[i]] = dst[index[i]] + a[i]

我怎样才能做到这一点更pythonic。更高效

4

1 回答 1

4

如果我理解正确,我认为您正在寻找numpy.bincount

dst = numpy.bincount(index, weights=a, minlength=maxIndex)

这给了我array([ 0., 6., 0., 11., 3., 16.])作为输出。如果您不想maxIndex手动计算,您可以minlength在函数调用中省略参数,并numpy为您返回一个适当大小的数组。

于 2013-08-30T08:03:38.913 回答