在Python中添加一些重复的行数据
比方说,我在Python中有一个数组,如下所示:在Python中添加一些重复的行数据,python,list,numpy,Python,List,Numpy,比方说,我在Python中有一个数组,如下所示: array=[[1,2,5,6], [1,3,6,7], [1,2,3,4], [2,3,9,8]] [[1,2,8,10], [1,3,6,7], [2,3,9,8]] ,我想用它做一个数组,总结第三和第四个数据信息,重复第1和第2个。也就是说,独特的阵列应该是这样的: array=[[1,2,5,6], [1,3,6,7], [1,2,3,4], [2
array=[[1,2,5,6],
[1,3,6,7],
[1,2,3,4],
[2,3,9,8]]
[[1,2,8,10],
[1,3,6,7],
[2,3,9,8]]
,我想用它做一个数组,总结第三和第四个数据信息,重复第1和第2个。也就是说,独特的阵列应该是这样的:
array=[[1,2,5,6],
[1,3,6,7],
[1,2,3,4],
[2,3,9,8]]
[[1,2,8,10],
[1,3,6,7],
[2,3,9,8]]
有办法吗?我相信numpy有一个很酷的功能,可以有效地完成它,但我找不到它。如果您不关心性能,Pandas提供了直观的语法:
import numpy as np, pandas as pd
A = np.array([[1,2,5,6],
[1,3,6,7],
[1,2,3,4],
[2,3,9,8]])
res = pd.DataFrame(A).groupby([0, 1], sort=False).sum()\
.reset_index().values
print(res)
array([[ 1, 2, 8, 10],
[ 1, 3, 6, 7],
[ 2, 3, 9, 8]], dtype=int64)
使用提供矢量化分组操作和大量其他实用程序功能的库:
import numpy_indexed as npi
np.hstack(npi.group_by(arr[:, :2]).sum(arr[:, 2:]))
非常感谢。这回答了我的问题。