假设我有一个数组:
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无济于事。不太明白这一点!
我们可以使用np.unique
其可选的argreturn_inverse
来基于其中的唯一性获取ID Indices
,然后将其与bincount
用于合并(基于ID的)总和,从而像这样解决它-
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句