2

我有一个带有 shape 的常规 float ndarray (100,50)。如何为前两列(即'idx1''idx2')以及'data'其余列命名。

4

1 回答 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 回答