如何使现有的numpy数组成为结构化数组?

时间:2017-05-14 01:47:32

标签: python numpy

我想给出一个名为columns的现有numpy数组。我试图通过以下方式命名列:

X = np.random.normal(0,1,(3,3))
names = ['a','b','c']
types = ['f4']*len(names)
t = list(zip(names,types))

Y= np.array(X, dtype=t)

但是,当我调用Y['a']时,我会得到一个3x3数组,而不是X的第一列,即3x1。

如何给出一个名为columns的现有数组?我的例子中的错误是什么?

1 个答案:

答案 0 :(得分:2)

您正在寻找.view,它以新的方式重新解释现有的内存。

names = ['a','b','c']
types = [X.dtype]*len(names)
t = list(zip(names,types))
Y = X.view(t)

为此,您需要匹配X的dtype - f4可能不正确。

您的代码相当于X.astype(t)。转换为struct数组时,会尝试将每个字段设置为相同的值。