NumPy - 日期和时间运算
NumPy 中的日期和时间运算
NumPy 中的日期和时间运算是指执行诸如在日期中添加或减去时间,或计算两个日期之间的差值之类的运算。
NumPy 提供了 datetime64 和 timedelta64 数据类型来执行这些运算。例如,您可以将天数添加到特定日期,或计算两个日期之间的天数。
这使得处理与时间相关的数据变得容易,例如调度、时间序列分析和事件跟踪等任务。
日期和时间的加减
NumPy 允许将 timedelta64 对象与 datetime64 对象进行加减运算。这样就可以轻松地根据特定间隔计算新的日期和时间。
示例:添加时间间隔
在以下示例中,我们将向 datetime64 对象添加各种 timedelta64 间隔 -
import numpy as np # 定义基准日期 base_date = np.datetime64('2024-01-01') # 添加不同的时间间隔 date_plus_10_days = base_date + np.timedelta64(10, 'D') # 通过更改为月精度手动添加月份 date_plus_2_months = np.datetime64(base_date, 'M') + np.timedelta64(2, 'M') #通过更改为年精度来手动添加年份 date_plus_5_years = np.datetime64(base_date, 'Y') + np.timedelta64(5, 'Y') print(date_plus_10_days) print(date_plus_2_months) print(date_plus_5_years)
我们得到如下所示的输出 -
2024-01-11 2024-03 2029
示例:减去时间间隔
在此示例中,我们从 datetime64 对象中减去各种 timedelta64 时间间隔 -
import numpy as np # 定义基准日期 base_date = np.datetime64('2024-01-01') # 减去不同的时间间隔 date_minus_10_days = base_date - np.timedelta64(10, 'D') # 通过更改为月精度手动减去月份 date_minus_2_months = np.datetime64(base_date, 'M') - np.timedelta64(2, 'M') # 通过更改为年精度手动减去年份 date_minus_5_years = np.datetime64(base_date, 'Y') - np.timedelta64(5, 'Y') print(date_minus_10_days) print(date_minus_2_months) print(date_minus_5_years)
以下是得到的输出 −
2023-12-22 2023-11 2019
计算日期之间的差异
NumPy 允许您计算两个 datetime64 对象之间的差异,从而得出 timedelta64 对象。这对于确定两个日期或时间之间的持续时间非常有用。
示例
在此示例中,我们计算两个 datetime64 对象之间的差值 -
import numpy as np # 定义两个日期 date1 = np.datetime64('2024-01-01') date2 = np.datetime64('2024-12-31') # 计算差值 difference = date2 - date1 print(difference)
这将产生以下结果 -
365 天
使用向量化运算
NumPy 支持对数组进行向量化运算datetime64 和 timedelta64 对象,这意味着您可以一次性对整个日期和时间数组执行计算,而无需逐个循环遍历它们。
向量化运算允许您同时对数组中的所有元素应用相同的运算,这比单独处理每个元素要快得多。
示例:向量化日期运算
在此示例中,我们将 timedelta64 个间隔的向量化加法添加到 datetime64 对象数组中 -
import numpy as np # 定义一个日期数组 dates = np.array(['2024-01-01', '2024-06-01', '2024-12-01'], dtype='datetime64[D]') # 为每个日期添加 10 天 new_dates = dates + np.timedelta64(10, 'D') print(new_dates)
以下是上述代码的输出 -
['2024-01-11' '2024-06-11' '2024-12-11']
在运算中组合 datetime64 和 timedelta64
NumPy 允许你在算术运算中组合 datetime64 和 timedelta64 对象,从而轻松执行复杂的日期和时间计算。
你可以对时间进行加减运算到特定日期的持续时间,甚至计算两个日期之间的差异。此功能可以轻松操作日期和时间,支持各种时间操作,例如按特定间隔移动日期或计算时间差。
示例
在此示例中,我们将执行多个结合 datetime64 和 timedelta64 对象的算术运算 -
import numpy as np # 定义基准日期 base_date = np.datetime64('2024-01-01') # 执行复杂的日期运算 # 加 5 年 new_date = np.datetime64(base_date, 'Y') + np.timedelta64(5, 'Y') # 减 3 个月 new_date = np.datetime64(new_date, 'M') - np.timedelta64(3, 'M') # 添加 15 天 new_date = new_date + np.timedelta64(15, 'D') print(new_date)
输出结果如下 -
2028-10-16