2010-11-26 89 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数组。

相关问题