Мы можем использовать np.unique
с его необязательным аргументом return_inverse
, чтобы получить идентификаторы, основанные на уникальности в пределах Indices
, а затем использовать идентификаторы с bincount
для получения суммированных бин (основанных на идентификаторах) сумм и, следовательно, решить это так -
Index,idx = np.unique(Indices, return_inverse=True)
Total = np.bincount(idx, Values)
Выходы для данного образца -
In [32]: Index
Out[32]: array([10, 11, 22])
In [33]: Total
Out[33]: array([ 0.3522, 25.9 , 54.433 ])
В качестве альтернативы, мы можем использовать pandas.factorize
, чтобы получить уникальные идентификаторы, а затем bincount, как показано ранее. Итак, первый шаг можно заменить на что-то вроде этого -
import pandas as pd
idx,Index = pd.factorize(Indices)