Ho una matrice Numpy e un elenco di indici i cui valori vorrei incrementare di uno. Questo elenco può contenere indici ripetuti e vorrei che l'incremento si ridimensionasse con il numero di ripetizioni di ciascun indice. Senza ripetizioni, il comando è semplice:Incremento array Numpy con indici ripetuti
a=np.zeros(6).astype('int')
b=[3,2,5]
a[b]+=1
Con ripetizioni, ho trovato il seguente metodo.
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
È questo il modo migliore? C'è il rischio che si assuma che le operazioni e np.unique
risultino nello stesso ordine ordinato? Mi manca qualche semplice operazione di Numpy per risolvere questo?
noti che numpy.zeros (6). astype ('int') è scritto meglio come numpy.zeros (6, int). – EOL