Python 如何根据另一个数组中的重复值在一个数组中添加值?

Python 如何根据另一个数组中的重复值在一个数组中添加值?,python,arrays,numpy,sorting,Python,Arrays,Numpy,Sorting,假设我有一个数组: Values = np.array([0.221,0.35,25.9,54.212,0.0022]) Indices = np.array([22,10,11,22,10]) 我想将“值”元素添加到一起,它们在“索引”中共享相同的数字 换句话说,我想要的输出: Total = np.array([0.221+54.212,0.35+0.002,25.9]) Index = np.array([22,10,11]) 我一直在尝试使用np.unique,但没有用。我不太明白

假设我有一个数组:

Values = np.array([0.221,0.35,25.9,54.212,0.0022])
Indices = np.array([22,10,11,22,10])
我想将“值”元素添加到一起,它们在“索引”中共享相同的数字

换句话说,我想要的输出:

Total = np.array([0.221+54.212,0.35+0.002,25.9])
Index = np.array([22,10,11])
我一直在尝试使用np.unique,但没有用。我不太明白

我们可以使用其可选的arg return\u逆来获得基于索引内唯一性的ID,然后使用那些带有bincount的ID来获得基于binned的求和,从而像这样解决它-

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来获得唯一的ID,然后使用bincount,如前所示。所以,第一步可以用这样的东西来代替-

import pandas as pd

idx,Index = pd.factorize(Indices)

一种可能性是考虑使用:


这应该是不言自明的,虽然它没有保留索引的顺序,但从您是否关心这一点的问题上还不完全清楚。

发布的解决方案中有一种对您有效吗?如果是这样,请考虑接受最适合你的。更多关于这意味着什么以及如何做的信息-。是的!很抱歉。更新
In [14]: import pandas as pd

In [15]: pd.DataFrame({'Values': Values, 'Indices': Indices}).groupby('Indices').agg(sum)
Out[15]: 
          Values
Indices         
10        0.3522
11       25.9000
22       54.4330