2013-04-06 42 views

回答

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是1 d陣列;它有形(3,)。如果您將轉換更改爲y = x.view(...)(即不要ravel x),則y將具有(3,1),並且y['idx1']將具有形狀(3,1)。

+0

不錯,不知道如何使用'ravel'來避免額外的長度-1軸。 – askewchan 2013-04-07 00:04:02

相關問題