[Numpy-discussion] possible bug in dtype for records

Travis Oliphant oliphant at ee.byu.edu
Wed Feb 15 11:27:14 EST 2006

Stefan van der Walt wrote:

>In [3]: numpy.__version__
>Out[3]: ''
>I see the following:
>In [4]: import numpy as N
>In [5]: ctype = N.dtype({'names': ('x', 'y', 'z'), 'formats' : [N.float32, N.float32, N.float32]})
>In [6]: ctype
>Out[6]: dtype([('x', '<f4'), ('y', '<f4'), ('z', '<f4')])
>In [7]: N.array([(1,2,3), (4,5,6)], dtype=ctype)
>Segmentation fault
>However, when I use a mutable list for defining dtype, i.e.
>'names': ['x', 'y', 'z'] instead of
>'names': ('x', 'y', 'z')
>it works fine.
>Is this expected behaviour?

Got it.  Basically, the VOID_setitem code expected the special -1 entry 
in the fields dictionary to be a list, but it was never enforced.  So, 
when you entered a tuple like this problems arose.

I changed it in SVN so that the -1 entry is always a tuple (you can't 
change the fields names anyway unless you define a new data-type) so its 
more aptly described as a tuple.

Thanks again for finding this...


More information about the NumPy-Discussion mailing list