[NumPy-Tickets] [NumPy] #1544: cannot set dtype on record array with 04 datetime records

NumPy Trac numpy-tickets@scipy....
Wed Jul 14 12:35:11 CDT 2010


#1544: cannot set dtype on record array with 04 datetime records
------------------------+---------------------------------------------------
 Reporter:  jdh2358     |       Owner:  somebody
     Type:  defect      |      Status:  new     
 Priority:  high        |   Milestone:  2.0.0   
Component:  numpy.core  |     Version:          
 Keywords:              |  
------------------------+---------------------------------------------------
 I use record arrays extensively with python datetimes, which works if you
 pass in a list of lists of data with the names.  numpy can accurately
 infer the dtypes and create a usable record array.  Eg,

     import datetime
     import numpy as np
     rows = [ [datetime.date(2001,1,1), 12, 23.],
              [datetime.date(2002,1,1), 10, 13.],
              [datetime.date(2003,1,1), -2, 1.],
              ]

     r1 = np.rec.fromrecords(rows, names='a,b,c')

     print r1.dtype

 prints out: [('a', '|O4'), ('b', '<i4'), ('c', '<f8')]

 but if I want to speed things up by providing the dtype, numpy raises
 ValueError:

     dtype = [('a', '|O4'), ('b', '<i4'), ('c', '<f8')]

     r2 = np.rec.fromrecords(rows, dtype=dtype)

 /home/titan/johnh/test.py
      12 dtype = [('a', '|O4'), ('b', '<i4'), ('c', '<f8')]
      13
 ---> 14 r2 = np.rec.fromrecords(rows, dtype=dtype)
      15
      16

 /home/titan/johnh/dev/lib/python2.4/site-packages/numpy/core/records.pyc
 in fromrecords(recList, dtype, shape, formats, names, titles, aligned,
 byteorder)
     610
     611     try:
 --> 612         retval = sb.array(recList, dtype=descr)
     613     except TypeError:  # list of lists instead of list of tuples
     614         if (shape is None or shape == 0):

 ValueError: Setting void-array with object members using buffer.
 WARNING: Failure executing file: <test.py>


 Running from svn HEAD:

 In [2]: numpy.__version__
 Out[2]: '2.0.0.dev8480'


 Here is a complete script::
 import datetime
 import numpy as np
 rows = [ [datetime.date(2001,1,1), 12, 23.],
          [datetime.date(2002,1,1), 10, 13.],
          [datetime.date(2003,1,1), -2, 1.],
          ]

 r1 = np.rec.fromrecords(rows, names='a,b,c')

 print r1.dtype

 dtype = [('a', '|O4'), ('b', '<i4'), ('c', '<f8')]

 r2 = np.rec.fromrecords(rows, dtype=dtype)

-- 
Ticket URL: <http://projects.scipy.org/numpy/ticket/1544>
NumPy <http://projects.scipy.org/numpy>
My example project


More information about the NumPy-Tickets mailing list