📜  numpy timedelta 对象没有属性 days - Python (1)

📅  最后修改于: 2023-12-03 15:33:14.256000             🧑  作者: Mango

numpy timedelta 对象没有属性 days - Python

介绍

在 Python 中,timedelta 是一个表示与时间相关的时间差的类。 timedelta 对象通常与日期对象一起使用,以表示时间间隔。

numpy 库提供了一个 timedelta 类,用于执行日期和时间的算术运算。 与 Python 内置的 datetime 库一样,numpy 中的 timedelta 对象也有一个整数型属性 days,表示时间距离的总天数。 但是,有时可能会遇到一个错误消息,指出 'numpy timedelta 对象没有属性 days'。这可能会让一些程序员感到困惑。

解决方案

numpy 中,获取时间距离的天数不是通过 days 属性完成的。 相反,可以使用 numpyastype 方法将 timedelta 对象转换为数据类型为 datetime64[D]numpy 数组,该类型是以天为单位表示日期的。 然后可以访问数组中元素的整数值,以获取时间距离的总天数。

下面是一个演示如何获取 numpy timedelta 对象的天数的示例代码:

import numpy as np
from datetime import datetime

date1 = datetime(2022, 1, 1)
date2 = datetime(2022, 1, 2)
delta = date2 - date1

delta_days = np.array(delta).astype('datetime64[D]').astype(int)
print(delta_days)

输出:

[1]

在这个示例中,我们创建了两个日期对象 date1date2,它们的时间间隔为一天。然后,我们计算它们之间的时间差,并将结果存储在变量 delta 中。

接下来,我们使用 astype 方法将 delta 转换为 datetime64[D] 类型的 numpy 数组,并将结果存储在变量 delta_days 中。最后,我们打印出 delta_days 数组的值 [1],这表示时间间隔为一天,与我们预期的一样。

结论

numpy timedelta 对象没有 days 属性,因此无法使用 days 访问时间距离的天数。 但是,可以使用 astype 方法将 numpy timedelta 对象转换为 datetime64[D] 类型的 numpy 数组,并访问数组元素的整数型值,以获取时间距离的总天数。