【发布时间】:2019-02-04 23:24:39
【问题描述】:
这些时间来自澳大利亚昆士兰州,那里没有实行夏令时。
我有一个使用this strategy 插值时间的程序,但它根据夏令时进行插值。
例如,此脚本在两个时间点之间进行插值,总共有 100 个间隔。
import numpy as np
from datetime import datetime
import datetime as dt
import time
x_dec = np.linspace(0, np.pi, num=100)
time1 = dt.datetime(2017, 11, 4, 20, 47, 0)
time2 = dt.datetime(2017, 11, 5, 3, 1, 0)
this_time = time.mktime(time1.timetuple())
next_time = time.mktime(time2.timetuple())
this_x_temp = np.interp(x_dec, (x_dec.min(), x_dec.max()), (this_time, next_time))
this_x = np.vectorize(datetime.fromtimestamp)(this_x_temp)
print(this_x)
它不是干净地生成插值时间,而是根据美国夏令时在凌晨 1 点左右循环两次。查看示例输出。
...
datetime.datetime(2017, 11, 5, 1, 49, 29, 90909)
datetime.datetime(2017, 11, 5, 1, 53, 52, 121212)
datetime.datetime(2017, 11, 5, 1, 58, 15, 151515)
datetime.datetime(2017, 11, 5, 1, 2, 38, 181818)
datetime.datetime(2017, 11, 5, 1, 7, 1, 212121)
datetime.datetime(2017, 11, 5, 1, 11, 24, 242424)
datetime.datetime(2017, 11, 5, 1, 15, 47, 272727)
...
鉴于我的所有观察都是在一天中的随机时间进行的,并且我需要在观察之间插入大约 100 个数据点,因此我认为我不能为此应用程序使用时间序列。我怎样才能让np.interp 忽略美国夏令时,只插入时间,就好像没有夏令时开关一样?
【问题讨论】:
-
我投票结束这个问题,因为这个问题与编程无关,不太可能帮助未来的读者。请向美国国会发送错误报告:夏令时。
-
我的版本在那一小时内添加了
fold=1:datetime.datetime(2017, 11, 5, 1, 2, 38, 181818, fold=1) -
hpaulj - 你能发布你的版本吗?
标签: python numpy datetime timestamp interpolation