numpy.datetime64日期相减结果含义的技术疑问
numpy.datetime64相减结果的数值含义解析
第一个案例:日期相减得到numpy.timedelta64(70,'Y')
你执行的代码:
import numpy as np np.datetime64('20230901') - np.datetime64('20230831')
这个70是无意义的错误值,问题出在你传入的纯数字日期没有明确单位,numpy自动推断存储单位时逻辑出错——它没识别出这是天级别的日期,反而错误以年份为存储单位,导致计算结果完全不符合实际(实际应为1天)。
解决方式:给日期明确指定单位,比如写成np.datetime64('20230901', 'D')和np.datetime64('20230831', 'D')相减,就能得到正确的numpy.timedelta64(1,'D')。
第二个案例:日期相减得到numpy.timedelta64(840,'M')
执行的代码:
import numpy as np np.datetime64('20230901-01') - np.datetime64('19700101-01')
这个结果是准确的,840代表两个日期之间的月份差:
- 从1970年1月到2023年9月,总计53年零8个月,计算得:
53*12 + 8 = 840个月,和结果完全匹配。 - 这里numpy正确识别了带分隔符的日期格式,自动以月份为存储单位,因此算出的是精准的月份差值。
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

