python - 将 datetime64 数组舍入到最接近的秒数
问题描述
我有一个 datetime64[ns] 类型的数组。每个元素看起来像'2019-08-30T14:02:03.684000000'
. 如何将值四舍五入到最接近的秒数,以便'2019-08-30T14:02:04'
在此示例中获得?
我知道我可以通过
t = t.astype('datetime64[s]')
但我特别需要对值进行舍入而不是截断它们。并且 numpy 'round' 函数似乎不喜欢 datetime64[ns] 数据类型。
解决方案
您可以通过将 np.datetime64 转换为 datetime.datetime 来实现。
import numpy as np
from datetime import datetime, timedelta
dt64 = np.datetime64('2019-08-30T14:02:03.684000000')
# np to datetime object
ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
dt = datetime.utcfromtimestamp(ts)
# Rounding
if dt.microsecond/1000000 > 0.5:
date = (dt + timedelta(seconds=1)).replace(microsecond=0)
else:
date = dt.replace(microsecond=0)
# Datetime to np
date_rounded = np.datetime64(date).astype('datetime64[s]')
输出:
numpy.datetime64('2019-08-30T14:02:04')
推荐阅读
- javascript - 预期的“选项”是一个对象或未定义的,得到了函数
- datastage - How to make ibm data stage read specific job parameter value from source
- python-3.x - 在一行中将字符串写入 CSV
- javascript - jquery div展开和折叠问题
- xml - XML中的反向滚动视图
- linux - CygWin 配置脚本发现错误的 Python 版本
- c++ - 为 VScode 配置 CMake raylib-cpp
- android - 如何在 android studio 中正确实现 ProGuard?
- python - Django - 尝试更新模型对象时出现 ValueError
- c# - 如何使用 aync 文件操作在程序关闭时保存程序状态