我正在尝试创建一个NumPy数组,该数组随后将由一些日期时间值填充。我似乎不能让它工作。
import numpy as np
t = np.empty(3,dtype='datetime64')
t我得到了一个TypeError: Invalid datetime unit "generic" in metadata。
如果我尝试也是一样的:
import numpy as np
t = np.empty(3,dtype='datetime64')
t[0] = np.datetime64('2014-12-12 20:20:20')我得到了:
TypeError : Cannot cast numpy timedelta64 scalar from metadata [m] to according to the rule 'same_kind'发布于 2014-12-14 20:07:15
如果您在创建数组时还指定了时间单位参数,则它应该可以工作。例如:
>>> 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]')然后,您还可以根据需要指定值:
>>> 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不允许表示具有泛型单位(即没有单位)的datetimes。在不使用t参数的情况下创建数组单元,然后尝试访问第一个元素t[0]将引发以下错误:
ValueError: Cannot convert a NumPy datetime value other than NaT with generic units在这里,NumPy不能推断datetime的表示应该有哪些单位。由于历月和历年的长度不同,猜测可能会导致错误值。
这一点在文档中不是很明确,但可以从datetime page中收集,并在源代码here中注明。
https://stackoverflow.com/questions/27469031
复制相似问题