No se pueden rellenar las matrices NumPy datetime64

Estoy tratando de crear una matriz NumPy que posteriormente se rellenará con algunos valores de fecha y hora. Parece que no puedo hacer que funcione.

import numpy as np t = np.empty(3,dtype='datetime64') t 

Obtengo un TypeError: Invalid datetime unit "generic" in metadata .
Lo mismo si lo bash:

 import numpy as np t = np.empty(3,dtype='datetime64') t[0] = np.datetime64('2014-12-12 20:20:20') 

Yo obtengo:

 TypeError : Cannot cast numpy timedelta64 scalar from metadata [m] to according to the rule 'same_kind' 

Debería funcionar si también especifica un parámetro de unidad de tiempo al crear la matriz. Por ejemplo:

 >>> 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]') 

Y luego también puede asignar los valores según sea necesario:

 >>> 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 no permite que los tiempos de datos con unidades genéricas (es decir, sin unidades) estén representados. La creación de la matriz t sin el parámetro de la unidad y luego intentar acceder al primer elemento t[0] generará este error:

 ValueError: Cannot convert a NumPy datetime value other than NaT with generic units 

Aquí, NumPy no puede inferir qué unidades debería tener la representación de la fecha y hora. Adivinar puede llevar a valores erróneos dadas las duraciones variables de los meses y años calendario.

Este punto no es muy explícito en la documentación, pero se puede extraer de la página datetime y se indica en el código fuente aquí .