Open
Description
This is obviously not useful:
In [4]: np.array(np.datetime64('2000-01-01', 'us')).item()
Out[4]: datetime.datetime(2000, 1, 1, 0, 0)
In [5]: np.array(np.datetime64('2000-01-01', 's')).item()
Out[5]: datetime.datetime(2000, 1, 1, 0, 0)
In [6]: np.array(np.datetime64('2000-01-01', 'ns')).item()
Out[6]: 946684800000000000
The underlying issue is that not all datetime64 types can be represented in datetime.datetime
objects, which have fixed us precision.
We should either:
- Raise
TypeError
in all cases when calling.item()
on a datetime64[ns] array. - Convert to
datetime.datetime
if it can be done safely, raiseValueError
otherwise.
My preference is for 2.