我想知道如何才能使这三个语句成为循环遍历的单个语句:
minute_dt_array = np.arange(start, end, dt.timedelta(minutes=1)).astype(dt.datetime)
hour_dt_array = np.arange(start, end, dt.timedelta(hours=1)).astype(dt.datetime)
day_dt_array = np.arange(start, end, dt.timedelta(days=1)).astype(dt.datetime)如果我想创建一个分钟、天、小时的列表,这样我就可以遍历一条语句,而不是写三次。我该怎么做?
例如,我正在编写一个循环,它的功能如下所示:
timeunits = ['day','hour','minute']
for interval in timeunits:
arrays['%s_array' % interval] = np.arange(start, end, dt.timedelta(**interval**=1)).astype(dt.datetime)但是我不知道在时间增量函数中放什么。
发布于 2020-12-16 15:24:04
如果您希望能够按名称调用数组,那么填充dict的zip又如何呢
from datetime import datetime, timedelta
import numpy as np
start, end = datetime(2020,11,20), datetime(2020,11,22)
arrays = dict()
for k, i in zip(('days','hours','minutes'), (1, 1/24, 1/1440)):
arrays[k] = np.arange(start, end, timedelta(i)).astype(datetime)
# one-liner:
# arrays = {k: np.arange(start, end, timedelta(i)).astype(datetime) for k, i in zip(('days','hours','minutes'), (1, 1/24, 1/1440))}或者,如果arrays是一个list就足够了,那么只需将时间间隔迭代为
arrays = []
for i in (1, 1/24, 1/1440):
arrays.append(np.arange(start, end, timedelta(i)).astype(datetime))发布于 2020-12-16 14:12:15
没有必要像你的时间间隔那样做:
1d =24小时= 1440分钟
所以,每60分钟你有1小时,每24小时你有1d。
当你按照你的建议组合间隔时,你会得到1小时时间增量分辨率的重复数据点,甚至是三倍于每日分辨率的数据点。因此,使用第一个粒度就足够了,只需检查您是否获得了分钟、小时的整数:
minute_dt_array = np.arange(start, end, dt.timedelta(minutes=1)).astype(dt.datetime)
the_list = []
for n, dtt in enumerate(minute_dt_array):
the_list.append([n // 1440, n // 60, n]) # days, hours, minutes the_list就是您所需要的。
https://stackoverflow.com/questions/65317977
复制相似问题