我有一列日期。我想计算数组中每个日期时间与指定日期之间的天数。
import datetime
print(mydates[0])
2013-04-30T20:00:00.000000000-0400
print(mydates[0] - datetime.date(2013,9,20))
TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O')
我需要创建一个数组,其中包含这些日期之间的天数,但更一般地说,我还需要知道如何将日期时间数组转换为日期。
我发现另一篇帖子将datetime.datetime.now()转换为日期,但我不知道语法如何在现有的一组日期时间使用它。
答案 0 :(得分:1)
您使用的是什么numpy类型(大概是np.datetime64
)并且datetime
模块中的类型不可隐式转换。
但它们显式可转换,这意味着你需要做的只是显式转换:
>>> mydates[0] - np.datetime64(datetime.date(2013,9,20))
numpy.timedelta64(-1,'D')
>>> mydates - np.datetime64(datetime.date(2013,9,20))
array([-1, 0, -152], dtype='timedelta64['D'])
(请注意'D'
是因为我使用datetime
值和日期单位;从输出中看,你看起来像是在使用纳秒单位。但这同样适用。)
如果您确实想将数组转换为datetime.date
个对象的数组,那么可以 ......但这可能是一个坏主意。当您使用本机numpy类型时,您的阵列紧凑而快速;当你存储一般的Python类型时,数组并不比普通的Python列表更好,而且假装其他方式更有误导性而不是有用。
如果你解释了你实际上想要做什么,有人可能会解释一个更好的方法,而不是转换为date
个对象的数组。