我想做以下操作。但它喜欢直方图操作。
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。更有效率
答案 0 :(得分:4)
如果我理解正确,我认为您正在寻找numpy.bincount
:
dst = numpy.bincount(index, weights=a, minlength=maxIndex)
这会给我array([ 0., 6., 0., 11., 3., 16.])
作为输出。如果您不想手动计算maxIndex
,可以省略函数调用中的minlength
参数,numpy
将为您返回一个适当大小的数组。