我有一个带有 shape 的常规 float ndarray (100,50)
。如何为前两列(即'idx1'
和'idx2'
)以及'data'
其余列命名。
问问题
695 次
1 回答
7
您可以使用该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(...)
(即不要 ravel x
),y
则将具有 (3,1),并且y['idx1']
将具有形状 (3,1)。
于 2013-04-06T16:13:20.520 回答