首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法填充NumPy datetime64数组

无法填充NumPy datetime64数组
EN

Stack Overflow用户
提问于 2014-12-14 19:56:31
回答 1查看 11.6K关注 0票数 14

我正在尝试创建一个NumPy数组,该数组随后将由一些日期时间值填充。我似乎不能让它工作。

代码语言:javascript
复制
import numpy as np
t = np.empty(3,dtype='datetime64')
t

我得到了一个TypeError: Invalid datetime unit "generic" in metadata

如果我尝试也是一样的:

代码语言:javascript
复制
import numpy as np
t = np.empty(3,dtype='datetime64')
t[0] = np.datetime64('2014-12-12 20:20:20')

我得到了:

代码语言:javascript
复制
TypeError : Cannot cast numpy timedelta64 scalar from metadata [m] to  according to the rule 'same_kind'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-14 20:07:15

如果您在创建数组时还指定了时间单位参数,则它应该可以工作。例如:

代码语言:javascript
复制
>>> 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]')

然后,您还可以根据需要指定值:

代码语言:javascript
复制
>>> 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]将引发以下错误:

代码语言:javascript
复制
ValueError: Cannot convert a NumPy datetime value other than NaT with generic units

在这里,NumPy不能推断datetime的表示应该有哪些单位。由于历月和历年的长度不同,猜测可能会导致错误值。

这一点在文档中不是很明确,但可以从datetime page中收集,并在源代码here中注明。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27469031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档