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

Skipper Seabold jsseabold at gmail.com
Sun Jun 27 23:53:52 EDT 2010


On Sun, Jun 27, 2010 at 8:26 AM, sam tygier <samtygier at yahoo.co.uk> wrote:
> 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.
>

+1 to applying the DeprecationWarning patch.

Skipper



More information about the NumPy-Discussion mailing list