猿问

通过添加相应的值在 2D numpy 数组中创建唯一行

我在 python 中有一个二维 numpy 数组:


[[ 1  2  1  3  3]

 [10 20 30 40 60]]

我想有独特价值的第一行,并添加第二行中的相应值删除列前一起。所以,我的数组的输出是这样的:


[[  1   2   3 ]

 [ 40  20 100 ]]

我是 python 的新手,我想不出更大规模的有效方法。


慕慕森
浏览 115回答 3
3回答

慕雪6442864

不幸的是,numpy没有内置的 groupby 函数(尽管有编写它们的方法)。如果您愿意使用pandas,这将很简单:import pandas as pd>>> pd.DataFrame(a.T).groupby(0,as_index=False).sum().values.Tarray([[  1,   2,   3],       [ 40,  20, 100]])

Smart猫小萌

a = np.array([[ 1,  2,  1,  3,  3],              [10, 20, 30, 40, 60]])unique_values = np.unique(a[0])new_array = np.zeros((2, len(unique_values)))for i, uniq in enumerate(np.unique(a[0])):    new_array[0][i] = uniq    new_array[1][i] = np.where(a[0]==uniq,a[1],0).sum()
随时随地看视频慕课网APP

相关分类

Python
我要回答