Numpy 时间日期的表示和计算

Numpy 时间日期的表示和计算

阅读更多:Numpy 教程

Numpy datetime64 的基本表示

Numpy 中的 datetime64 类型用于表示时间和日期。其格式为 YYYY-MM-DD 或者 YYYY-MM-DDTHH:mm:ss.ssssss。其中,YYYY 表示年份,MM 表示月份,DD 表示天数,HH 表示小时,mm 表示分钟,ss 表示秒数,ss.ssssss 表示毫秒数。下面是一些 datetime64 类型的示例:

import numpy as np

date1 = np.datetime64('2022-01-01')
date2 = np.datetime64('2022-01-01 12:30:00.000001')
Python

我们还可以使用字符串格式化指令来创建 datetime64 类型,也可以使用浮点数表示相对于 Unix 时间戳的时间戳:

date3 = np.datetime64('2022-01', 'M')  # 从一个 YYYY-MM 格式的字符串创建
date4 = np.datetime64('2022-01-01T12:30:00.000001', 'ms')  # 使用毫秒戳创建
date5 = np.datetime64(1641040800, 's')  # 从一个 Unix 时间戳创建
Python

我们可以通过 dtype 属性来查看一个数组中的元素类型:

arr = np.array([date1, date2, date3, date4, date5])
arr.dtype  # 输出 dtype('datetime64[ns]')
Python

注意,在 datetime64 类型中,中括号中的 ns/ms 等表示精度的参数可以指定为:

  • Y: 年
  • M: 月
  • D: 日
  • h: 时
  • m: 分
  • s: 秒
  • ms: 毫秒
  • us: 微秒
  • ns: 纳秒
  • ps: 皮秒
  • fs: 飞秒
  • as: 阿托秒

计算时间差

可以使用减法 (-) 运算符来计算两个 datetime64 类型的时间之差。例如:

delta1 = date2 - date1  # 时间差为 12.500000 秒
delta2 = np.datetime64('2022-01-01T12:30:00.000001') - np.datetime64('2022-01-01T12:30:00.000005')
Python

可以得到 delta1 的数据类型为 numpy.timedelta64,它可以表示时间差的不同精度级别,例如:

delta3 = np.timedelta64(1, 'D')  # 一天
delta4 = np.timedelta64(5, 'h')  # 五个小时
delta5 = np.timedelta64(10000, 'ms')  # 10000 毫秒
Python

除了直接使用 np.timedelta64 创建时间差外,我们还可以使用 astype 方法将 datetime64 类型转换为 timedelta64 类型:

timedelta1 = np.datetime64('2022-01-01T12:30:00.000001') - np.datetime64('2022-01-01')
timedelta2 = timedelta1.astype('timedelta64[D]')  # 获取时间差的日期部分
timedelta3 = timedelta1.astype('timedelta64[s]')  # 获取时间差的秒数
Python

增加或减少时间

Numpy 提供了一些函数来增加或减少时间间隔,例如:

date1_plus_day = np.datetime64('2022-01-01') + np.timedelta64(1, 'D')  # 加一天
date2_minus_hour = np.datetime64('2022-01-01T12:30:00.000001') - np.timedelta64(1, 'h')  # 减一小时
Python

我们还可以使用 np.datetime64 函数中的 months 参数来增加或减少月份:

date1_plus_month =np.datetime64('2022-01-01') + np.timedelta64(1, 'M')  # 加一个月
date2_minus_month = np.datetime64('2022-01-01T12:30:00.000001') - np.timedelta64(1, 'M')  # 减一个月
Python

需要注意的是,months 参数的精确含义是根据日历月份而不是简单的 30 天计算的,因此该参数的含义在不同的情况下会有所不同,具体可以参考官方文档。

格式化输出时间

Numpy 提供了一些函数来将 datetime64 类型的时间转换为字符串,例如:

date_string1 = np.datetime_as_string(date1, unit='D')  # 转换为 YYYY-MM-DD 格式的字符串
date_string2 = np.datetime_as_string(date2, unit='s')  # 转换为 YYYY-MM-DDTHH:mm:ss 格式的字符串
Python

这里的 unit 参数表示输出字符串的粒度单位,可以设置为 Y/M/W/D/h/m/s/ms/us/ns 等。

我们还可以使用 strftime 方法来进行更为自由灵活的时间格式化操作。例如:

date_string3 = date2.astype('O').strftime('%Y年%m月%d日 %H:%M:%S.%f')  # 转换为中文日期时间字符串
Python

这里的 %Y 表示四位数的年份,%m 表示两位数的月份,%d 表示两位数的日期,%H 表示两位数的小时,%M 表示两位数的分钟,%S 表示两位数的秒数,%f 表示六位数的毫秒数。更多的格式化操作可以参考 Python 的官方文档。

总结

本文介绍了 Numpy 中的 datetime64 类型的基本表示和计算方式,包括时间差的计算、时间的增减、时间的格式化输出等。Numpy 的时间日期类型灵活多样、使用方便,是数据分析中不可或缺的组成部分。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册