1

我正在尝试在 python 中加入 recarrys,以便相同的值加入许多元素。以下代码在比例为 1:1 时有效,但当我尝试执行 many: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 中指示的相应分析师。

4

1 回答 1

1

记录数组可能有很好的用途,但我认为 python dict 在这里应该一样好......我也想知道 numpy 自己做这件事的方式,如果它很好的话。

dct = dict(zip(data2['causes'], data2['analyst']))
all_data = mlab.rec_append_fields(data1, 'analyst',
    [dct[x] for x in data1['causes']])
于 2011-11-02T01:58:08.017 回答