NumPy - 日期和时间基础知识
NumPy 中的日期和时间
NumPy 中的日期和时间是指处理和操作数组中的日期和时间数据。NumPy 提供了 datetime64 和 timedelta64 数据类型来处理日期和时间。
这些类型允许您执行日期和时间的加法、减法和比较等运算,以及在不同时间单位(例如,天、小时、分钟)之间进行转换。
NumPy datetime64 数据类型
numpy.datetime64 数据类型用于表示日期和时间。它提供各种时间单位,例如年、月、天、小时、分钟和秒。此数据类型允许精确表示和操作日期和时间数据。
datetime64 数据类型允许灵活地表示具有不同精度级别的日期和时间。
示例:创建 datetime64 对象
在以下示例中,我们将使用不同的时间单位创建 datetime64 对象 -
import numpy as np # 创建 datetime64 对象 date1 = np.datetime64('2023-01-01') date2 = np.datetime64('2023-01-01 12:30') date3 = np.datetime64('2023-01-01 12:30:45') print(date1) print(date2) print(date3)
以下是得到的输出 -
2023-01-01 2023-01-01T12:30 2023-01-01T12:30:45
创建 datetime64 数组
您可以使用 numpy.array() 函数创建 datetime64 对象数组。这允许存储和操作多个日期和时间值。
datetime64 对象数组对于对日期和时间数据执行向量化操作非常有用。
示例:创建 datetime64 数组
在本例中,我们在 NumPy 中创建一个 datetime64 对象数组 -
import numpy as np # 创建一个 datetime64 对象数组 dates = np.array(['2023-01-01', '2023-02-01', '2023-03-01'], dtype='datetime64') print(dates)
这将产生以下结果 -
['2023-01-01' '2023-02-01' '2023-03-01']
使用 datetime64 进行日期运算
NumPy 允许对 datetime64 对象进行简单的算术运算,包括时间单位的加减。
您可以添加或减去时间单位(例如天、月或年)来操作日期和时间值。
示例:加减时间单位
在下面的示例中,我们对 datetime64 对象执行算术运算 -
import numpy as np import datetime # 定义初始日期 date = np.datetime64('2023-01-01') # 在初始日期上加 10 天 date_plus_10_days = date + np.timedelta64(10, 'D') # 通过转换为 datetime 并使用时间差 (timedelta),从初始日期中减去 1 个月 date_as_datetime = date.astype(datetime.datetime) # 将一个月近似为 30 天 date_minus_1_month = date_as_datetime - datetime.timedelta(days=30) print(date_plus_10_days) print(np.datetime64(date_minus_1_month))
以下是上述代码的输出 -
2023-01-11 2022-12-02
比较 datetime64 对象
在 NumPy 中,您可以使用比较运算符和 datetime64 对象轻松比较日期和时间。这些运算符可用于检查一个日期是否早于、晚于或与另一个日期相同。
以下是 datetime64 数据类型的比较运算符 -
- 相等 (==): 检查两个日期是否完全相同。
- 不等 (!=): 检查两个日期是否不同。
- 小于 (<): 检查第一个日期是否早于第二个日期。
- 小于或等于 (<=): 检查第一个日期是否早于或与第二个日期完全相同。
- 大于 (>): 检查第一个日期是否晚于第二个日期。
- 大于或等于 (>=): 检查第一个日期是否晚于或与第二个日期完全相同。
示例:比较日期
在此示例中,我们使用小于和大于比较运算符比较 datetime64 对象 -
import numpy as np # 比较 datetime64 对象 date1 = np.datetime64('2023-01-01') date2 = np.datetime64('2023-02-01') is_earlier = date1 < date2 is_later = date1 > date2 print(is_earlier) print(is_later)
输出结果如下 -
True False
datetime64 和 timedelta64 之间的转换
NumPy 允许你在 datetime64 和 timedelta64 对象之间进行转换。这使得计算时间间隔和持续时间变得容易。例如,您可以对特定日期进行加减天数、月数或年数,或者计算两个日期之间的差值。
示例:datetime64 和 timedelta64 之间的转换
在本例中,我们将 datetime64 对象转换为 timedelta64 对象,反之亦然 -
import numpy as np # 将 datetime64 转换为 timedelta64 start_date = np.datetime64('2023-01-01') end_date = np.datetime64('2023-02-01') duration = end_date - start_date print(duration) # 将 timedelta64 转换为 datetime64 new_date = start_date + duration print(new_date)
之后执行上述代码,我们得到以下输出 -
31 天 2023-02-01
使用时间单位
NumPy 支持 datetime64 和 timedelta64 的各种时间单位,包括年、月、周、日、小时、分钟和秒。使用合适的时间单位可确保日期和时间数据的准确表示和操作。
示例:使用不同的时间单位
在此示例中,我们演示了如何使用 datetime64 和 timedelta64 对象来使用不同的时间单位 -
import numpy as np # 使用不同的时间单位 date_year = np.datetime64('2023', 'Y') date_month = np.datetime64('2023-01', 'M') date_week = np.datetime64('2023-01-01', 'W') print(date_year) print(date_month) print(date_week)
我们得到如下所示的输出 -
2023 2023-01 2022-12-29