11
キーに基づいて2つの配列を結合できる実装はありますか? NumPy列の1つにキーを格納するための正規の方法です(NumPyには 'id'または 'rownames'属性がありません)。NumPyのSQL結合またはRのmerge()関数?
キーに基づいて2つの配列を結合できる実装はありますか? NumPy列の1つにキーを格納するための正規の方法です(NumPyには 'id'または 'rownames'属性がありません)。NumPyのSQL結合またはRのmerge()関数?
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')])
別のオプションは、パンダ(documentation)を使用することです。私はそれに慣れていませんが、標準的なnumpyよりも強力なデータ構造と機能を提供しています。「リレーショナル」または「ラベル付け」されたデータを扱うのは簡単で直感的です。そしてそれは確かに結合機能と併合機能を持っています(例えば、http://pandas.sourceforge.net/merging.html#joining-on-a-key参照)。
ああ、 'recfunctions'について忘れました。私は現在パンダを評価しています...多くの選択肢...ありがとうございます。 – hatmatrix