SQL-соединение или функция R слияния () в NumPy? - PullRequest
12 голосов
/ 15 октября 2011

Есть ли реализация, где я могу объединить два массива на основе их ключей? Говоря о том, является ли канонический способ хранения ключей в одном из столбцов NumPy (NumPy не имеет атрибута 'id' или 'rownames')?

1 Ответ

16 голосов
/ 15 октября 2011

Если вы хотите использовать только numpy, вы можете использовать структурированные массивы и функцию lib.recfunctions.join_by (см. http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html). Небольшой пример:

In [1]: import numpy as np
   ...: import numpy.lib.recfunctions as rfn
   ...: a = np.array([(1, 10.), (2, 20.), (3, 30.)], dtype=[('id', int), ('A', float)])
   ...: b = np.array([(2, 200.), (3, 300.), (4, 400.)], dtype=[('id', int), ('B', float)])

In [2]: rfn.join_by('id', a, b, jointype='inner', usemask=False)
Out[2]: 
array([(2, 20.0, 200.0), (3, 30.0, 300.0)], 
      dtype=[('id', '<i4'), ('A', '<f8'), ('B', '<f8')])

Другой вариант - использовать панд ( документация ). У меня нет опыта работы с ним, но он предоставляет более мощные структуры данных и функциональные возможности, чем стандартный numpy, «чтобы сделать работу с« реляционными »или« помеченными »данными как простой, так и интуитивно понятной». И он, безусловно, имеет функции объединения и объединения (например, см. http://pandas.sourceforge.net/merging.html#joining-on-a-key).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...