numpy数组:按一列分组,对另一列求和 [英] Numpy array: group by one column, sum another
本文介绍了numpy数组:按一列分组,对另一列求和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个看起来像这样的数组:
I have an array that looks like this:
array([[ 0, 1, 2],
[ 1, 1, 6],
[ 2, 2, 10],
[ 3, 2, 14]])
我想对第三列中第二列中具有相同值的值求和,所以结果是:
I want to sum the values of the third column that have the same value in the second column, so the result is something is:
array([[ 0, 1, 8],
[ 1, 2, 24]])
我开始对此进行编码,但是我坚持了这一金额:
I started coding this but I'm stuck with this sum:
import numpy as np
import sys
inFile = sys.argv[1]
with open(inFile, 'r') as t:
f = np.genfromtxt(t, delimiter=None, names =["1","2","3"])
f.sort(order=["1","2"])
if value == previous.value:
sum(f["3"])
推荐答案
您可以使用pandas
将算法矢量化:
You can use pandas
to vectorize your algorithm:
import pandas as pd, numpy as np
A = np.array([[ 0, 1, 2],
[ 1, 1, 6],
[ 2, 2, 10],
[ 3, 2, 14]])
df = pd.DataFrame(A)\
.groupby(1, as_index=False)\
.sum()\
.reset_index()
res = df[['index', 1, 2]].values
结果
array([[ 0, 1, 8],
[ 2, 2, 24]], dtype=int64)
这篇关于numpy数组:按一列分组,对另一列求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文