假设您有以下代码
a = np.ones(8)
pos = np.array([1, 3, 5, 3])
a[pos] # returns array([ 1., 1., 1., 1.]), where the 2nd and 4th el are the same
a[pos] +=1
最后一条指令返回
array([ 1., 2., 1., 2., 1., 2., 1., 1.])
但是我希望总结相同指数上的作业,以便获得
array([ 1., 2., 1., 3., 1., 2., 1., 1.])
有人已经遇到过同样的情况吗?
答案 0 :(得分:3)
对元素的操作数
a
执行无缓冲的就地操作 由indices
指定。对于加法ufunc
,此方法是等效的 到a[indices] += b
,除了为元素累积结果 被索引不止一次。
np.add.at(a, pos, 1)
print(a)
array([ 1., 2., 1., 3., 1., 2., 1., 1.])
请注意该功能可以就地工作。