2010-11-26 99 views
4

假設我有兩個數組(進口numpy的爲NP)之後,在Python中,如何通過鍵列來連接兩個數組?

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

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

我怎麼辦得到:

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

基本上,加入使用第一列作爲關鍵。

感謝

+0

這看起來像一個非常具體的結果。特別是因爲你需要特定順序的None。 – Falmarri 2010-11-26 18:02:42

+0

你的陣列有多大?你可以使用[namedtuple](http://docs.python.org/dev/library/collections.html#collections.namedtuple)+純python(@Sven),然後numpy? – denis 2010-11-29 17:37:57

回答

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

2

我發現的最佳解決方案是使用熊貓,它可以非常好地處理連接,並且熊貓物體可以輕鬆地轉換成numpy數組。

相關問題