回顾我的一些笔记,我发现了以下内容:
import numpy
dt64 = numpy.datetime64( "2011-11-11 14:23:56" )
# dt64 is internally just some sort of int
# it has no fields, and very little support in numpy
import datetime, time
dtdt = dt64.astype(datetime.datetime) # <<<<<<<< use this!
dtdt.year
dtdt.month
dtdt.day
# to convert back:
dt64 = np.datetime64(dtdt) # <<<<<<<< use this too!
dt64.item().strftime("%Y%b%d")
模块 datetime 和 time 是普通的 python 模块:它们工作得相当好,有很多字段、转换和支持。
datetime64 是 numpy 中内置的未完全实现的子类型。它只是某种 64 位 int(?)(也许是 1970 年以来的秒数?)。 datetime64 与 datetime.datetime 完全不同。如果将 datetime64 转换为浮点数并返回,则会损失很多精度(位)——因此会出现错误。
(不是 numpy 的一部分)模块 datetime 还可以执行以下操作:
# timedelta()
delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
delta # datetime.timedelta(11, 36548) # (days,seconds)
delta.days
delta.seconds
delta.microseconds
delta.total_seconds() # 986948.0
# arithmetic: +-*/
# 2 timedelta's
# timedelta and datetime
now = datetime.datetime.now()
christmas = datetime.datetime(2019,12,25)
delta = christmas - now
所以让 numpy 有时将您的日期数据存储为 datetime64,但我建议不要使用 numpy 模块 datetime 来处理日期时间-算术。