Как объединить 2 массива python (аналогично SQL Join) - PullRequest
0 голосов
/ 14 января 2020

У меня есть 2 больших массива (500,1,23000) и еще один (700,1,25000), мне нужно объединить их. Они различны

Простой пример:

a = np.array([['a', 3, 5, 6, 9], ['b', 14, 15, 56]])
b = np.array([['b', 4, 76, 44, 91, 100], ['c', 14, 15],['d',2,6,7])

Желаемый результат:

c = [['a', 3, 5, 6, 9], ['b', 4, 76, 44, 91, 100],['c', 14, 15],['d', 2, 6, 7]]

Это часть предварительной обработки данных для машинное обучение.

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вероятно, это можно сделать быстрее (он повторяется по обоим спискам дважды), но должно дать вам то, что вы хотите.

import numpy as np
from collections import defaultdict

a = np.array([['a', 3, 5, 6, 9], ['b', 14, 15, 56]])
b = np.array([['b', 4, 76, 44, 91, 100], ['c', 14, 15],['d',2,6,7]])

def dictify(arr):
    return defaultdict(lambda : [], {x[0]: x[1:] for x in arr})

d1 = dictify(a)
d2 = dictify(b)

new_keys = set.union(set(d1.keys()), set(d2.keys()))

ans = [[k] + d1[k] + d2[k] for k in new_keys]

Значение ans равно:

[['d', 2, 6, 7], ['c', 14, 15], ['a', 3, 5, 6, 9], ['b', 14, 15, 56, 4, 76, 44, 91, 100]]
0 голосов
/ 14 января 2020

Вот HACK , если вам интересно, взгляните на ваше неопределенное требование

a = np.array([['a', 3, 5, 6, 9], None])
b = np.array([['b', 4, 76, 44, 91, 100], ['c', 14, 15], ['d', 2, 6, 7]])
c = np.append(a, b)
d = np.delete(c, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...