我有一个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.bincount
和np.unique
操作会得到相同的排序顺序,是否存在风险?我是否错过了一些用于解决此问题的简单Numpy操作?