У меня есть массив Numpy и список индексов, значения которых я бы хотел увеличить на единицу. Этот список может содержать повторяющиеся индексы, и я хотел бы, чтобы приращение масштабировалось с количеством повторений каждого индекса. Без повторов команда проста:
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, чтобы решить эту проблему?