2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以為此使用numpy.bincount 。
import numpy as np
a = 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]

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您考慮其他套餐,pandas是一個(gè)不錯(cuò)的選擇:
pd.DataFrame(a).groupby([0])[1].sum()
輸出:
0
2.0 0.125
3.0 0.250
4.0 0.250
5.0 0.250
6.0 0.125
Name: 1, dtype: float64
添加回答
舉報(bào)