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