You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab转Python新手求助:如何生成指定区间间隔的规则时间序列?

生成规则时间序列:从Matlab到Python的转换方案

嘿,作为刚从Matlab转Python的新手,你遇到的这个时间序列生成问题其实很好解决!Python里的pandas库专门为时间序列处理做了优化,写法比Matlab更直观易懂,咱们直接看对应你需求的实现:

用pandas快速生成(推荐)

pandas的date_range()函数就是干这个的,完美对应你Matlab里的datenum增量写法:

import pandas as pd

# 生成2013年1月1日至1月31日、每10分钟一个间隔的时间序列
time_series = pd.date_range(start='2013-01-01', end='2013-01-31', freq='10T')

参数解释:

  • start/end:直接用字符串指定起始和结束日期,格式很灵活(比如'2013-01-01'、'2013/1/1'都可以),也可以传入datetime对象
  • freq:指定时间间隔,这里的'10T'代表10分钟(T是minute的缩写),常见的还有:
    • 'H':小时
    • 'D':天
    • 'W':周
    • 'M':月末日期
    • 更复杂的比如'2H30T'就是2小时30分钟间隔

生成的结果是一个DatetimeIndex对象,你可以直接用于数据分析,或者转成列表、numpy数组来使用。

用标准库datetime实现(无额外依赖)

如果不想引入pandas,用Python自带的datetime和timedelta也能实现,就是需要写个循环:

from datetime import datetime, timedelta

start_date = datetime(2013, 1, 1)
end_date = datetime(2013, 1, 31)
interval = timedelta(minutes=10)

time_series = []
current_date = start_date
while current_date <= end_date:
    time_series.append(current_date)
    current_date += interval

这种写法更接近你Matlab里手动增量的思路,但处理大规模数据或者后续的时间序列操作时,pandas会方便很多。

对比你给出的Matlab代码:

t = datenum(2013,1,1):datenum(0,0,0,0,10,0):datenum(2013,12,31);

Python的写法不需要手动计算时间间隔的数值,直接用语义化的参数就能实现,可读性更强。

内容的提问来源于stack exchange,提问作者matt_python_newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:38:28