[Numpy-discussion] issue #1431 accessing multiple fields in a recarray

sam tygier samtygier at yahoo.co.uk
Sun Jun 27 08:26:50 EDT 2010


Hello

A while ago there was a discussion about field order when accessing recarrays. eg:

>>> 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')])

http://thread.gmane.org/gmane.comp.python.numeric.general/36933

There is a bug at http://projects.scipy.org/numpy/ticket/1431

The fix is very simple, but there was some worry that some existing code may require the broken behavior. eg some code may ask for:
x[['y','x']]
and expect the result to have 'x' as the first column in the result.

I suspect that code like this is rare (it could be easily changed to x[['x','y']] if thats what is really wanted).

I think the correct way to proceed is probably to raise a DeprecationWarning for code that it requiring the broken behavior. The bug has a patch to implement this. Then in a future version the patch to fix it could be applied.

Thanks

Sam




More information about the NumPy-Discussion mailing list