numpy docsのセクションAccessing multiple fields at onceでは、次のように述べています。
要求された順序に関係なく、フィールドは常に同じ順序で返されることに注意してください。
ドキュメントには、次のような例も示されています。
>>> x = np.array([(1.5,2.5,(1.0,2.0)),(3.,4.,(4.,5.)),(1.,3.,(2.,6.))],
dtype=[('x','f4'),('y',np.float32),('value','f4',(2,2))])
>>> x[['x','y']]
array([(1.5, 2.5), (3.0, 4.0), (1.0, 3.0)],
dtype=[('x', '<f4'), ('y', '<f4')])
>>> x[['y','x']]
array([(1.5, 2.5), (3.0, 4.0), (1.0, 3.0)],
dtype=[('x', '<f4'), ('y', '<f4')])
ただし、numpy 1.6.1 で自分でコードを実行したところ、別の結果が得られました。
In [20]: x = np.array([(1.5,2.5,(1.0,2.0)),(3.,4.,(4.,5.)),(1.,3.,(2.,6.))],
....: dtype=[('x','f4'),('y',np.float32),('value','f4',(2,2))])
In [21]: x[['x','y']]
Out[21]:
array([(1.5, 2.5), (3.0, 4.0), (1.0, 3.0)],
dtype=[('x', '<f4'), ('y', '<f4')])
In [22]: x[['y','x']]
Out[22]:
array([(2.5, 1.5), (4.0, 3.0), (3.0, 1.0)],
dtype=[('y', '<f4'), ('x', '<f4')])
この動作は numpy 1.6 から 1.7 に変更されましたか、それとも何か見逃していますか?
編集numpy 1.7.1 でコードをテストしましたが、結果は numpy 1.6 と同じでした。