我有一个形状为 (100,50)
的常规 float ndarray。我如何给前两列命名,即 'idx1'
和 'idx2'
,以及 'data'
给其余的列。
最佳答案
您可以使用view
方法。这是一个示例,使用形状为 (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)。
关于python - 如何将 ndarray 转换为结构化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852579/