【问题标题】:In Python, how do I join two arrays by key column?在 Python 中,如何通过键列连接两个数组?
【发布时间】:2010-11-26 17:59:20
【问题描述】:

假设我有两个数组(在 import numpy as np 之后),

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)

基本上,使用第一列作为键的连接。

谢谢

【问题讨论】:

  • 这看起来是一个非常具体的结果。尤其是因为您希望 None 以特定的顺序。
  • 您的阵列有多大?你能用namedtuple+纯python(@Sven),然后用numpy吗?

标签: python arrays numpy


【解决方案1】:

执行此操作的纯 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

【讨论】:

  • 我发现使用sqlite3 是最好的。基于该模块构建功能对我来说是奇迹。谢谢!
【解决方案2】:

我找到的最佳解决方案是使用 pandas,它可以很好地处理连接,并且 pandas 对象可以轻松地与 numpy 数组相互转换。

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2022-06-17
    • 1970-01-01
    • 2014-01-02
    • 2013-04-06
    • 1970-01-01
    • 2021-07-07
    • 2015-01-11
    • 2014-07-23
    相关资源
    最近更新 更多