python - 无法填充 NumPy datetime64 数组

标签 python arrays datetime numpy

我正在尝试创建一个 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/

相关文章:

python - 从pd数据帧到Excel的分层索引,需要转发填充和取消合并

python - Django (1.9) makemigrations 在 bool 字段上没有得到 Blank=True

python - 使用缩小的公平窗口迭代数组

algorithm - 总和大于给定值的最小子数组的大小

java - 将字符串时间转换为本地时间以进行比较

Python 2.7 : Pandas datetime does not work for future dates?

python - 提取字符串中的列表或元组

python - 如何使用 Django include 标签作为单独的 HTML 模板?

python - TCP 套接字文件传输

javascript - 如何在类构造函数中使用 join() 方法?