如果第一个匹配二维数组,Numpy 添加第二个值

所以我有一个 numpy 数组:


array([[2.   , 0.125],

       [3.   , 0.125],

       [3.   , 0.125],

       [4.   , 0.125],

       [4.   , 0.125],

       [5.   , 0.125],

       [5.   , 0.125],

       [6.   , 0.125]])

如果第一个匹配如下,我想将这些条目合并在一起:


array([[2.   , 0.125],

       [3.   , 0.25 ],

       [4.   , 0.25 ],

       [5.   , 0.25 ],

       [6.   , 0.125]])

他们是一种无需循环即可解决此问题的方法吗?


素胚勾勒不出你
浏览 99回答 2
2回答

有只小跳蛙

您可以为此使用numpy.bincount 。import numpy as npa = np.array([[2.   , 0.125],              [3.   , 0.125],              [3.   , 0.125],              [4.   , 0.125],              [4.   , 0.125],              [5.   , 0.125],              [6.   , 0.125],              [5.   , 0.125]],)def groupby(a):    """    >>> groupby(a)    array([[2.   , 0.125],           [3.   , 0.25 ],           [4.   , 0.25 ],           [5.   , 0.25 ],           [6.   , 0.125]])    """    values, indices = np.unique(a[:, 0], return_inverse=True)    sum = np.bincount(indices, weights=a[:, 1])    return np.c_[values, sum]

心有法竹

如果您考虑其他套餐,pandas是一个不错的选择:pd.DataFrame(a).groupby([0])[1].sum()输出:02.0    0.1253.0    0.2504.0    0.2505.0    0.2506.0    0.125Name: 1, dtype: float64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python