[NumPy-Tickets] [NumPy] #1912: datetime and record arrays/masked arrays

NumPy Trac numpy-tickets@scipy....
Mon Jul 18 16:59:55 CDT 2011


#1912: datetime and record arrays/masked arrays
---------------------------+------------------------------------------------
 Reporter:  cjordansquire  |       Owner:  somebody   
     Type:  defect         |      Status:  new        
 Priority:  normal         |   Milestone:  Unscheduled
Component:  Other          |     Version:  devel      
 Keywords:                 |  
---------------------------+------------------------------------------------
 I'm using the 2.0.0 development version of numpy on ububtu 10.10 .

 When string arguments for the dtype are given for a record array, and one
 of the individual dtypes is datetime64[D], the day part is lost and the
 datetime become generic. This makes it impossible to assign anything to
 it.

 For example, look at
 np.zeros(4, dtype = ','.join(['datetime64[D]', 'i4']))

 This gives an array with dtype dtype=[('f0', <M8), ('f1', '<i4')], where
 the <M8 should be <M8[D].


 A different bug happens when putting datetimes into masked arrays. For
 example,
 np.ma.zeros(4,dtype= 'datetime64[D],i4')
 gives a ValueError: mismatch in size of old and new data-descriptor with
 traceback





 /home/intern/my26/lib/python2.6/site-packages/numpy/ma/core.pyc in
 __call__(self, a, *args, **params)
    7142             _extras[p] = params.pop(p)
    7143         # Get the result

 -> 7144         result = self._func.__call__(a, *args,
 **params).view(MaskedArray)
    7145         if "fill_value" in common_params:
    7146             result.fill_value = _extras.get("fill_value", None)

 /home/intern/my26/lib/python2.6/site-packages/numpy/ma/core.pyc in
 __array_finalize__(self, obj)
    2794         if self.dtype.names:
    2795             if self._fill_value is None:
 -> 2796                 self._fill_value = _check_fill_value(None,
 self.dtype)
    2797         return
    2798

 /home/intern/my26/lib/python2.6/site-packages/numpy/ma/core.pyc in
 _check_fill_value(fill_value, ndtype)
     392         if fields:
     393             descr = ndtype.descr
 --> 394             fill_value =
 np.array(_recursive_set_default_fill_value(descr),
     395                                   dtype=ndtype,)
     396         else:

 /home/intern/my26/lib/python2.6/site-packages/numpy/ma/core.pyc in
 _recursive_set_default_fill_value(dtypedescr)
     360
 deflist.append(tuple(_recursive_set_default_fill_value(currenttype)))
     361         else:
 --> 362
 deflist.append(default_fill_value(np.dtype(currenttype)))
     363     return tuple(deflist)
     364

 ValueError: mismatch in size of old and new data-descriptor

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


More information about the NumPy-Tickets mailing list