如何从列数组创建一个numpy recarray

4

我有一对numpy数组;这里是一个简单等价的例子:

t = np.linspace(0,1,100)
data = ((t % 0.1) * 50).astype(np.uint16)

我希望将这些内容作为numpy recarray的列,数据类型为f8, i2。这是我似乎能够获得我想要的唯一方法:

X = np.array(zip(t,data),dtype=[('t','f8'),('data','i2')])

但是如果我的数据值很大,这样做是否正确?我想尽量减少不必要的数据移动开销。

这似乎应该是一个简单的问题,但我找不到一个好的例子。

1个回答

10

使用numpy.rec.fromarrays是一种简单的方法。在您的情况下:

np.rec.fromarrays([t, data], dtype=[('t','f8'),('data','i2')])

或者简单地说
np.rec.fromarrays([t, data], names='t,data', formats='f8,i2')

希望有效。

还有其他方案可以在将2D numpy数组转换为结构化数组中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接