Increment Numpy array with repeated indices

indexing, numpy, python

Solution

After you do

bbins=np.bincount(b)

why not do:

a[:len(bbins)] += bbins

(Edited for further simplification.)

Problem

I have a Numpy array and a list of indices whose values I would like to increment by one. This list may contain repeated indices, and I would like the increment to scale with the number of repeats of each index. Without repeats, the command is simple: ``` a=np.zeros(6).astype('int') b=[3,2,5] a[b]+=1 ``` With repeats, I've come up with the following method. ``` 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 ``` Is this the best way? Is there are risk involved with assuming that the `np.bincount` and `np.unique` operations would result in the same sorted order? Am I missing some simple Numpy operation to solve this?

Original source