Добавить некоторые строки данных дубликатов в Python - PullRequest
0 голосов
/ 07 октября 2018

Скажем, у меня в Python есть массив, который выглядит следующим образом:

array=[[1,2,5,6],
       [1,3,6,7],
       [1,2,3,4],
       [2,3,9,8]]

, и я хотел бы сделать из этого массив, который суммирует 3-ю и 4-ю информацию о данных для дубликата 1-гои 2-й.Т.е. уникальный массив должен выглядеть так:

[[1,2,8,10],
 [1,3,6,7],
 [2,3,9,8]]

Есть ли способ сделать это?Я уверен, что у numpy есть классная функция, которая делает это эффективно, но я не могу ее найти.

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Использование библиотеки 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]])
0 голосов
/ 07 октября 2018

Если вы не беспокоитесь о производительности, 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...