Python 如何将数据数组转换为结构化数组?
我有一个形状为Python 如何将数据数组转换为结构化数组?,python,numpy,Python,Numpy,我有一个形状为(100,50)的常规浮点数组。如何为前两列命名,即'idx1'和'idx2',以及'data'为其余列命名。您可以使用查看方法。下面是一个示例,在演示中使用形状为(3,5)的数组: In [21]: x Out[21]: array([[ 0., 1., 2., 3., 4.], [ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.]]) In [22]: y
(100,50)
的常规浮点数组。如何为前两列命名,即'idx1'
和'idx2'
,以及'data'
为其余列命名。您可以使用查看
方法。下面是一个示例,在演示中使用形状为(3,5)的数组:
In [21]: x
Out[21]:
array([[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.]])
In [22]: y = x.ravel().view(dtype=[('idx1', float), ('idx2', float), ('data', float, 3)])
In [23]: y['idx1']
Out[23]: array([ 0., 5., 10.])
In [24]: y['data']
Out[24]:
array([[ 2., 3., 4.],
[ 7., 8., 9.],
[ 12., 13., 14.]])
In [25]: y['data'][1]
Out[25]: array([ 7., 8., 9.])
请注意,
y
是一个一维数组;它有形状(3,)。如果您将转换更改为y=x.view(…)
(即不要拉威尔x
),y
将有(3,1),而y['idx1']
将有形状(3,1)。Nice,不知道如何使用ravel
来避免额外的长度-1轴。