Python 将datetime64数组舍入到最近的秒
我有一个datetime64[ns]类型的数组。每个元素看起来都类似于“2019-08-30T14:02:03.684000000”。如何将值四舍五入到最接近的秒,以便在本例中获得Python 将datetime64数组舍入到最近的秒,python,numpy,datetime,rounding,Python,Numpy,Datetime,Rounding,我有一个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来实现
'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')