如何将ndarray转换为结构化数组?

sia*_*mii 2 python numpy

我有一个常规浮动ndarray形状(100,50).如何为前两列(即'idx1''idx2',以及'data'其他列)指定名称.

War*_*ser 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.])
Run Code Online (Sandbox Code Playgroud)

注意,这y是一维数组; 它有形状(3,).如果你将转换更改为y = x.view(...)(即不要ravel x),y则会有(3,1),并且y['idx1']会有形状(3,1).