在Python中添加一些重复的行数据

时间:2018-10-07 15:08:48

标签: 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]]

有办法吗?我确定numpy有一个很酷的功能,可以高效地执行它,但是我找不到它。

2 个答案:

答案 0 :(得分:1)

使用numpy_indexed库,该库提供矢量化的分组操作和许多其他实用程序功能:

import numpy_indexed as npi

np.hstack(npi.group_by(arr[:, :2]).sum(arr[:, 2:]))

array([[ 1,  2,  8, 10],
       [ 1,  3,  6,  7],
       [ 2,  3,  9,  8]])

答案 1 :(得分:0)

如果您不关心性能,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)