I\'m trying to create a NumPy array that will subsequently be populated by some datetime values. I can\'t seem to make it work.
import numpy as np
t = np.emp
It should work if you also specify a time unit parameter when creating the array. For example:
>>> t = np.empty(3, dtype='datetime64[s]')
>>> t
array(['1970-01-01T00:00:00+0000', '1970-01-01T00:00:00+0000',
'1970-01-01T00:00:00+0000'], dtype='datetime64[s]')
And then you can also assign the values as required:
>>> t[0] = np.datetime64('2014-12-12 20:20:20')
>>> t
array(['2014-12-12T20:20:20+0000', '1970-01-01T00:00:00+0000',
'1970-01-01T00:00:00+0000'], dtype='datetime64[s]')
NumPy doesn't permit datetimes with generic units (i.e. no units) to be represented. Creating the array t
without the unit parameter and then trying to access the first element t[0]
will raise this error:
ValueError: Cannot convert a NumPy datetime value other than NaT with generic units
Here, NumPy isn't able to infer what units the representation of the datetime should have. Guessing might lead to erroneous values given the varying lengths of calendar months and years.
This point isn't very explicit in the documentation but can be gleaned from the datetime page and is noted in the source code here.