以不同顺序连接具有相同字段的numpy记录数组

时间:2014-06-10 22:16:01

标签: python arrays numpy record recarray

我有两个带有“兼容”但不相同的dtypes的ndarray,如下所示:

In [22]: A = numpy.empty(shape=(5), dtype=[("A", "f4"), ("B", "f4")])

In [23]: B = numpy.empty(shape=(5), dtype=[("B", "f4"), ("A", "f4")])

In [24]: numpy.concatenate((A, B))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-c930307fb7e4> in <module>()
----> 1 numpy.concatenate((A, B))

TypeError: invalid type promotion

没有明确地逐字段连接,有没有办法连接两个?


我是如何应对这种情况的?我不确定,可能是我的代码中的早期错误,但无论我修复了早期的错误,我都很好奇答案。

1 个答案:

答案 0 :(得分:2)

不是一个笨拙的专家,但这可能会按你的意愿运作。

import numpy.lib.recfunctions


In [35]: numpy.lib.recfunctions.stack_arrays([A,B], usemask = False)
Out[35]: 
array([(0.0, 0.0), (-3.935500814122861e-10, 4.579443381413502e-41),
       (-4.456803814889554e-10, 4.579443381413502e-41),
       (-8.571845455662697e-09, 4.579443381413502e-41),
       (6.726232628759122e-44, 0.0), (0.0, 0.0),
       (4.579443381413502e-41, -3.935500814122861e-10),
       (4.579443381413502e-41, -4.456803814889554e-10),
       (4.579443381413502e-41, -8.571845455662697e-09),
       (0.0, 6.726232628759122e-44)], 
      dtype=[('A', '<f4'), ('B', '<f4')])