[Numpy-discussion] Dates and times and Datetime64 (again)

Andreas Hilboll lists at hilboll.de
Sat Apr 19 03:03:06 EDT 2014


On 14.04.2014 20:59, Chris Barker wrote:
> On Fri, Apr 11, 2014 at 4:58 PM, Stephan Hoyer <shoyer at gmail.com
> <mailto:shoyer at gmail.com>> wrote:
> 
>     On Fri, Apr 11, 2014 at 3:56 PM, Charles R Harris
>     <charlesr.harris at gmail.com <mailto:charlesr.harris at gmail.com>> wrote:
> 
>         Are we in a position to start looking at implementation? If so,
>         it would be useful to have a collection of test cases, i.e.,
>         typical uses with specified results. That should also cover
>         conversion from/(to?) datetime.datetime.
> 
> 
> yup -- tests are always good! 
> 
>     Indeed, my personal wish-list for np.datetime64 is centered much
>     more on robust conversion to/from native date objects, including
>     comparison.
> 
> 
> A good use case. 
>  
> 
>     Here are some of my particular points of frustration (apologies for
>     the thread jacking!):
>     - NaT should have similar behavior to NaN when used for comparisons
>     (i.e., comparisons should always be False).
> 
> 
> make sense.
>  
> 
>     - You can't compare a datetime object to a datetime64 object.
> 
> 
> that would be nice to have.
>  
> 
>     - datetime64 objects with high precision (e.g., ns) can't compare to
>     datetime objects.
> 
> 
> That's a problem, but how do you think it should be handled? My thought
> is that it should round to microseconds, and then compare -- kind of
> like comparing float32 and float64...
>  
> 
>     Pandas has a very nice wrapper around datetime64 arrays that solves
>     most of these issues, but it would be nice to get much of that
>     functionality in core numpy,
> 
> 
> yes -- it would -- but learning from pandas is certainly a good idea.
> 
> 
>     from numpy import datetime64
>     from datetime import datetime
> 
>     print np.datetime64('NaT') < np.datetime64('2011-01-01') # this
>     should not to true
>     print datetime(2010, 1, 1) < np.datetime64('2011-01-01') # raises
>     exception
>     print np.datetime64('2011-01-01T00:00', 'ns') > datetime(2010, 1, 1)
>     # another exception
>     print np.datetime64('2011-01-01T00:00') > datetime(2010, 1, 1) #
>     finally something works!
> 
> 
> now to get them into proper unit tests....

As one further suggestion, I think it would be nice if doing arithmetic
using np.datetime64 and datetime.timedelta objects would work:

   np.datetime64(2011,1,1) + datetime.timedelta(1) ==
np.datetime64(2011,1,2)

And of course, but this is probably in the loop anyways,
np.asarray([list_of_datetime.datetime_objects]) should work as expected.

-- Andreas.



More information about the NumPy-Discussion mailing list