Присоединяйтесь к Recarrays по атрибутам в Python - PullRequest
1 голос
/ 02 ноября 2011

Я пытаюсь объединить повторные записи в python так, чтобы одно и то же значение соединялось со многими элементами.Следующий код работает, когда это соотношение 1: 1, но когда я пытаюсь сделать много: 1, он присоединяется только к одному экземпляру:

import numpy as np
import matplotlib
# First data structure
sex = np.array(['M', 'F', 'M', 'F', 'M', 'F'])
causes = np.array(['c1', 'c1', 'c2', 'c2', 'c3', 'c3'])
data1 = np.core.records.fromarrays([sex, causes], names='sex, causes')

# Second data structure
causes2 = np.array(['c1', 'c2', 'c3'])
analyst = np.array(['p1', 'p2', 'p3'])
data2 = np.core.records.fromarrays([causes2, analyst], names='causes, analyst')

# Join on Cause
all_data = matplotlib.mlab.rec_join(('causes'), data1, data2, jointype='leftouter')

Я хотел бы, чтобы в массиве all_data содержалось вседанных из data1 с соответствующим аналитиком, указанным в data2.

1 Ответ

1 голос
/ 02 ноября 2011

Возможно, было бы неплохо использовать массив записей, но я подумал, что python dict должен быть таким же хорошим здесь ... Хотите знать и самодельный способ сделать это сам, если это хорошо.

dct = dict(zip(data2['causes'], data2['analyst']))
all_data = mlab.rec_append_fields(data1, 'analyst',
    [dct[x] for x in data1['causes']])
...