我正在尝试创建一个 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'
最佳答案
如果您在创建数组时还指定了一个时间单位参数,它应该可以工作。例如:
>>> 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 不允许表示具有通用单位(即无单位)的日期时间。创建不带 unit 参数的数组 t
然后尝试访问第一个元素 t[0]
将引发此错误:
ValueError: Cannot convert a NumPy datetime value other than NaT with generic units
在这里,NumPy 无法推断日期时间的表示应具有的单位。鉴于日历月和年的长度不同,猜测可能会导致错误的值。
这一点在文档中不是很明确,但可以从 datetime page 中收集到。并在源代码中注明 here .
关于python - 无法填充 NumPy datetime64 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27469031/