numpy Python:对于一个二维数组,求第一列中非唯一元素的第二列的和?

f45qwnt8  于 2023-02-16  发布在  Python
关注(0)|答案(2)|浏览(122)

嗨请你帮我解决这个问题。
我有一个排序的2D numpy数组,在第一列有一些重复的元素,我想创建一个新的排序数组,其中第二列已经汇总了重复的元素。
例如,我有一个2 × 4的数组:

y = np.array(([14.0, 100], [15.0, 130], [15.0, -90], [16.0, 60]))

我需要下面的2 x 3数组:

z = np.array(([14.0, 100], [15.0, 40], [16.0, 60]))

我正在查看reduce/map/lambda,但还没有让它工作。

k0pti3hp

k0pti3hp1#

sums=[np.sum(y[:,1],where=y[:,0]==a) for a in np.unique(y[:,0])]
counts=np.stack([np.unique(y[:,0]),sums],axis=1)

这给出了以下结果:

[[ 14. 100.][ 15.  40.][ 16.  60.]]
s4chpxco

s4chpxco2#

使用np.unique + np.split

u, idx = np.unique(Y[:, 0], return_index=True)
Z = np.column_stack([u, [a.sum() for a in np.split(Y[:,1], idx)[1:]]])
array([[ 14., 100.],
       [ 15.,  40.],
       [ 16.,  60.]])

相关问题