NumPy 日期和时间

NumPy 提供了处理日期和时间的功能。

NumPy 中的 datetime64() 函数将日期和时间信息存储为 64 位整数 datetime64 对象。


示例 1:获取 NumPy 中的当前日期和时间

import numpy as np

# get the current date and time 
result = np.datetime64('now')

print("Current date and time:")
print(result)
Current date and time:
2023-04-29T04:00:05

在此示例中,我们使用带有 now 参数的 datetime64() 函数来获取当前的日期和时间。

上面的输出表明当前日期和时间是 2023 年 4 月 29 日,时间是 凌晨 4:00:05


示例 2:获取 NumPy 中的当前日期

import numpy as np

# get the current date
date_today = np.datetime64('today', 'D')

print("Today's date:")
print(date_today)

输出

Today's date:
2023-04-29

在这里,我们使用带有 todayD 参数的 datetime64() 函数来获取当前日期。

  • today 参数指定当前日期。
  • D 参数指定一天作为分辨率。

示例 3:对不同的时间单位使用 datetime64()

import numpy as np

# use datetime64() for different time units
year = np.datetime64('2023', 'Y')
month = np.datetime64('2023-04', 'M')
day = np.datetime64('2023-04-29', 'D')
hour = np.datetime64('2023-04-29T10', 'h')
minute = np.datetime64('2023-04-29T10:30', 'm')
second = np.datetime64('2023-04-29T10:30:15', 's')

print("Year: ", year)
print("Month: ", month)
print("Day: ", day)
print("Hour: ", hour)
print("Minute: ", minute)
print("Second: ", second)

输出

Year:  2023
Month:  2023-04
Day:  2023-04-29
Hour:  2023-04-29T10
Minute:  2023-04-29T10:30
Second:  2023-04-29T10:30:15

在上面的示例中,我们使用 datetime64() 为不同的时间单位创建了 datetime64 对象。

注意:虽然指定时间单位不是严格必需的,但在创建 datetime64 对象时指定它们是一个好习惯。


转换 datetime64 对象

在 NumPy 中,可以将 datetime64 对象与其他数据类型进行相互转换。

1. 将 datetime64 转换为 Python datetime 对象

我们可以将 datetime64 对象转换为 Python 的 datetime 对象。例如,

import numpy as np
from datetime import datetime

# create a datetime64 object
dt64 = np.datetime64('2023-04-29T12:34:56')

# convert datetime64 to datetime object
dt = dt64.astype(datetime)

# print the datetime object
print(dt)

输出

2023-04-29 12:34:56

2. 将 Python datetime 对象转换为 datetime64

以下是将 Python 的 datetime 对象转换为 datetime64 对象的方法

import numpy as np
from datetime import datetime

# create a datetime object
dt = datetime(2023, 4, 29, 12, 34, 56)

# convert datetime to datetime64 object
dt64 = np.datetime64(dt)

# print the datetime64 object
print(dt64)

输出

2023-04-29T12:34:56

创建日期范围

在 NumPy 中,我们使用 arange() 函数来创建日期范围。例如,

import numpy as np

# create a range of dates from 2023-04-01 to 2023-04-10
dates = np.arange('2023-04-01', '2023-04-11', dtype='datetime64[D]')

# print the dates
print(dates)

输出

['2023-04-01' '2023-04-02' '2023-04-03' '2023-04-04' '2023-04-05'
 '2023-04-06' '2023-04-07' '2023-04-08' '2023-04-09' '2023-04-10']

在此示例中,我们使用 arrange() 函数创建了从 2023 年 4 月 1 日到 2023 年 4 月 10 日的日期范围。

在这里,dtype='datetime64[D]' 表示范围内的每个日期都应以一天作为分辨率。


NumPy datetime64 对象的算术运算

我们可以对 NumPy 的 datetime64 对象执行算术运算,如加法和减法。

让我们看一个例子。

import numpy as np

# create a datetime64 object for today
today = np.datetime64('today')

# add one day to today's date
tomorrow = today + np.timedelta64(1, 'D')

# create datetime64 objects for two dates
date1 = np.datetime64('2023-05-01')
date2 = np.datetime64('2023-04-01')

# calculate the number of days between the two dates
num_days = date1 - date2

# display the results
print("Today's date:", today)
print("Tomorrow's date:", tomorrow)
print("Number of days between", date1, "and", date2, "is", num_days)

输出

Today's date: 2023-04-29
Tomorrow's date: 2023-04-30
Number of days between 2023-05-01 and 2023-04-01 is 30 days

在上面的示例中,我们使用 np.datetime64('today') 创建了表示今天的 datetime64 对象。

然后,我们使用 today + np.timedelta64(1, 'D') 在今天的日期上加一天,以获取明天的日期。

请注意以下代码,

date1 - date2

在这里,我们执行了算术减法运算来计算两个日期之间的天数。

注意timedelta() 是 Python datetime 模块中的一个函数。要了解更多信息,请访问 Python datetime.timedelta 类


NumPy busday() 函数

在 NumPy 中,np.busday() 函数用于计算两个日期之间的工作日数(即,排除节假日的星期数)。

让我们看一个例子。

import numpy as np

# create datetime64 objects for two dates
date1 = np.datetime64('2023-04-01')
date2 = np.datetime64('2023-05-01')

# calculate the number of business days between the two dates
num_business_days = np.busday_count(date1, date2)

# display the number of business days between the two dates
print("Number of business days between", date1, "and", date2, "is", num_business_days)

输出

Number of business days between 2023-04-01 and 2023-05-01 is 20
 

在这里,我们使用 np.busday_count() 来计算 date1date2 之间的工作日数。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战