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
在这里,我们使用带有 today
和 D
参数的 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()
来计算 date1 和 date2 之间的工作日数。