2010-11-26 12 views
4

私を得るにはどうすればよいPythonでは、キー列で2つの配列を結合するにはどうすればよいですか?

a=np.array([['a',1],['b',2]],dtype=object) 

b=np.array([['b',3],['c',4]],dtype=object) 

、私は(NPとして輸入numpyの後の)二つの配列があるとします。

c=np.array([['a',1,None],['b',2,3],['c',None,4]],dtype=object) 

基本的には、最初の列を使用して参加しますキーとして。

おかげ

+0

本当に具体的な結果に見えます。特に、その特定の順序でNoneを望むからです。 – Falmarri

+0

あなたの配列の大きさはどれくらいですか? [namedtuple](http://docs.python.org/dev/library/collections.html#collections.namedtuple)+純粋なPython(@Sven)を使用して、それからnumpyを使用できますか? – denis

答えて

5

これを行うには、純粋なPythonのアプローチは

da = dict(a) 
db = dict(b) 
c = np.array([(k, da.get(k), db.get(k)) 
       for k in set(da.iterkeys()).union(db.iterkeys())]) 

だろう。しかし、あなたがnumpyのを使用している場合は、あなたの配列は、おそらく大であり、あなたがより良い性能を持つソリューションを探しています。この場合、実際のデータベースを使用することをお勧めします。例えば、Pythonに付属のsqlite3 moduleです。

+0

私は 'sqlite3'を使った方が最良だと分かっています。そのモジュールに基づいて機能を構築することは、私のために驚くべきことです。ありがとう! – UpTide

2

私が見つけた最も良い解決策は、結合を非常にうまく処理するpandasと、numpy配列から簡単に変換するpandasオブジェクトの使用です。

関連する問題