一尘不染

具有重复索引的增量Numpy数组

python

我有一个Numpy数组和一个索引列表,我想将其值加1。该列表可能包含重复的索引,我希望增量可以随每个索引的重复次数而缩放。没有重复,命令很简单:

a=np.zeros(6).astype('int')
b=[3,2,5]
a[b]+=1

通过重复,我想出了以下方法。

b=[3,2,5,2]                     # indices to increment by one each replicate
bbins=np.bincount(b)
b.sort()                        # sort b because bincount is sorted
incr=bbins[np.nonzero(bbins)]   # create increment array
bu=np.unique(b)                 # sorted, unique indices (len(bu)=len(incr))
a[bu]+=incr

这是最好的方法吗?假设np.bincountnp.unique操作将导致相同的排序顺序是否有风险?我是否缺少一些简单的Numpy操作来解决此问题?


阅读 122

收藏
2020-12-20

共1个答案

一尘不染

做完之后

bbins=np.bincount(b)

为什么不这样做:

a[:len(bbins)] += bbins

(为进一步简化而编辑。)

2020-12-20