NumPy - 日期和时间表示
在 NumPy 中表示日期和时间
在 NumPy 中表示日期和时间需要使用特定的数据类型来处理时间数据。datetime64 数据类型用于处理日期和时间,而 timedelta64 数据类型用于表示时间长度。
时间数据是指与时间相关的信息,例如日期、时间或时间间隔。它有助于追踪特定时间段内发生的变化或事件。
这些类型允许您以精确的方式存储、操作和执行日期和时间相关的计算。例如,您可以创建日期数组,执行诸如加减天数之类的算术运算,并轻松比较不同的日期。
numpy.datetime64 数据类型
NumPy 中的 numpy.datetime64 数据类型用于表示日期和时间。它可以处理不同的时间单位,从年到秒的微小分数,这使得它能够非常灵活且精确地处理日期和时间数据。
示例:创建 datetime64 对象
在以下示例中,我们将创建具有不同时间单位的 datetime64 对象 -
import numpy as np # 创建具有不同时间单位的 datetime64 对象 date_year = np.datetime64('2024', 'Y') date_month = np.datetime64('2024-11', 'M') date_day = np.datetime64('2024-11-26', 'D') date_hour = np.datetime64('2024-11-26T15', 'h') date_minute = np.datetime64('2024-11-26T15:45', 'm') date_second = np.datetime64('2024-11-26T15:45:30', 's') print(date_year) print(date_month) print(date_day) print(date_hour) print(date_minute) print(date_second)
以下是得到的输出 -
2024 2024-11 2024-11-26 2024-11-26T15 2024-11-26T15:45 2024-11-26T15:45:30
创建 datetime64 数组
您可以使用 numpy.array() 函数创建 datetime64 对象数组。这有助于同时存储和处理多个日期和时间。使用数组可以轻松快捷地对日期和时间数据进行操作。
示例
在此示例中,我们创建一个包含 datetime64 对象的数组,用于表示不同的日期 -
import numpy as np # 创建一个包含 datetime64 对象的数组 dates = np.array(['2024-01-01', '2024-06-01', '2024-12-01'], dtype='datetime64[D]') print(dates)
这将产生以下结果 -
['2024-01-01' '2024-06-01' '2024-12-01']
numpy.timedelta64 数据类型
NumPy 中的 numpy.timedelta64 数据类型用于表示时间长度。它可以处理不同的时间单位,让您指定精确的时间间隔。 timedelta64 类型可以轻松执行精确的时间长度计算。
示例:创建 timedelta64 对象
在以下示例中,我们将创建代表不同时间间隔的 timedelta64 对象 -
import numpy as np # 创建具有不同时间单位的 timedelta64 对象 delta_days = np.timedelta64(10, 'D') delta_hours = np.timedelta64(5, 'h') delta_minutes = np.timedelta64(30, 'm') print(delta_days) print(delta_hours) print(delta_minutes)
以下是上述代码的输出 -
10 days 5 hours 30 minutes
使用 datetime64 和 timedelta64 进行算术运算
NumPy 支持使用 datetime64 和 timedelta64 对象进行算术运算,从而轻松计算新的日期和时间长度。您可以对日期进行加减运算,或者计算两个日期之间的差值。这些操作可以帮助您快速高效地操作日期和时间。
例如,您可以对日期进行加减天数,或者计算两个日期之间的差值。
示例:执行日期运算
在本例中,我们将 datetime64 对象与 timedelta64 对象进行加减运算 -
import numpy as np # 使用 datetime64 和 timedelta64 进行日期运算 start_date = np.datetime64('2024-01-01') end_date = start_date + np.timedelta64(45, 'D') duration = end_date - start_date print(end_date) print(duration)
输出结果如下所示 -
2024-02-15 45 天
比较 datetime64 对象
NumPy 允许您使用多个比较运算符比较 datetime64 对象,从而更轻松地分析日期和时间。
您可以使用诸如 == 之类的运算符来检查两个日期是否相同,!= 来检查它们是否不同,< 来查看一个日期是否在另一个日期之前,<= 来查看一个日期是在另一个日期之前还是与另一个日期相同。
类似地,您可以使用 > 来检查一个日期是否在另一个日期之后,>= 来检查一个日期是否在另一个日期之后或与另一个日期相同。这些比较对于处理基于时间的数据非常重要。
示例
在此示例中,我们比较两个 datetime64 对象以确定它们的时间关系 -
import numpy as np # 比较 datetime64 对象 date1 = np.datetime64('2024-01-01') date2 = np.datetime64('2024-12-31') is_earlier = date1 < date2 is_later = date1 > date2 print(is_earlier) print(is_later)
执行上述代码后,我们得到以下输出 -
True False
处理时区
NumPy 的 datetime64 不直接支持时区,但您可以使用 pytz 或 datetime 等外部库来处理支持时区的数据。
示例:使用时区
在此示例中,我们使用 pytz 库来处理时区转换 -
from datetime import datetime import pytz # 定义时区 tz_utc = pytz.utc tz_est = pytz.timezone('US/Eastern') # 创建 datetime 对象并转换时区 dt_utc = datetime(2024, 1, 1, 12, 0, 0, tzinfo=tz_utc) dt_est = dt_utc.astimezone(tz_est) print("UTC:", dt_utc) print("EST:", dt_est)
结果如下 −
UTC: 2024-01-01 12:00:00+00:00 EST: 2024-01-01 07:00:00-05:00