我在 python 中有一个二维 numpy 数组:[[ 1 2 1 3 3] [10 20 30 40 60]]我想有独特价值的第一行,并添加第二行中的相应值删除列前一起。所以,我的数组的输出是这样的:[[ 1 2 3 ] [ 40 20 100 ]]我是 python 的新手,我想不出更大规模的有效方法。
3 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
不幸的是,numpy没有内置的 groupby 函数(尽管有编写它们的方法)。如果您愿意使用pandas,这将很简单:
import pandas as pd
>>> pd.DataFrame(a.T).groupby(0,as_index=False).sum().values.T
array([[ 1, 2, 3],
[ 40, 20, 100]])
Smart猫小萌
TA贡献1911条经验 获得超7个赞
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()
添加回答
举报
0/150
提交
取消