我知道这是一个古老的问题,但是如果有人遇到这个问题,我会尽力回答。
从1.11版本开始,
numpy
不要尝试将date / datetime对象的可迭代变量自动转换为datetime64数组,这从测试套件的摘录中可以很清楚地看出:at the moment, we don’t automatically convert these to datetime64
dt = datetime.date(1970, 1, 1)
arr = np.array([dt])
assert_equal(arr.dtype, np.dtype(‘O’))dt = datetime.datetime(1970, 1, 1, 12, 30, 40)
arr = np.array([dt])
assert_equal(arr.dtype, np.dtype(‘O’))
理想情况下,
numpy会认为
datetime64可以使用正确的单位;看到这个问题。
datetime64
从标量构造时,将其设置M8[D]
为日期对象和日期时间对象的单位M8[us]
(相关测试)。如果指定
dtype='datetime64'
,或者,同样地,dtype='M8'
时,单位设置为“通用”,后来做出决议M8[D]
(尽管这是合乎逻辑的有它解析为M8[D]
,看到这个问题):np.datetime_data(np.dtype(‘datetime64’))
(‘generic’, 1)
np.datetime_data(np.dtype(‘M8’))
(‘generic’, 1)
np.datetime_data(np.dtype(‘M8[D]’))
(‘D’, 1)
np.datetime_data(np.dtype(‘M8[us]’))
(‘us’, 1)given_times.astype('datetime64')不再引发异常-在1.11中已修复。从1.11开始,datetime64对象是timezone-naive,因此
tzinfo
如所提供的示例中那样传递带有set的datetime对象将触发弃用警告。



