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

使用Numpy np.arange生成datetime轴刻度时内核崩溃重启求助

解决自定义X轴Datetime刻度导致内存溢出/内核崩溃的问题

我之前也踩过完全一样的坑——用datetime数组设置自定义刻度时不小心搞出了超大的临时数组,直接把内存撑爆,内核悄咪咪重启连个报错都没有。结合你的情况,534个datetime值的数组,要设置间隔10的刻度,完全不用复杂的频率生成逻辑,直接从原数组采样最稳妥。

核心解决方案:直接从原数组采样刻度

你的需求应该是每隔10个数据点取一个作为X轴刻度吧?这种情况别去生成新的datetime序列,直接对summertime数组做切片采样即可,内存占用极低,绝对不会出现崩溃问题:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 假设summertime是datetime类型的数组(比如Python原生list或pandas DatetimeIndex)
# 每隔10个元素取一个作为刻度位置
tick_positions = summertime[::10]

# 绘制图表并设置刻度
fig, ax = plt.subplots()
# 这里替换成你的绘图代码,比如ax.plot(summertime, your_data)
ax.set_xticks(tick_positions)

# 可选:格式化日期显示,防止标签重叠
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

为什么你的原代码会崩溃?

大概率是你尝试用pd.date_range或类似频率生成函数时犯了小错误:

  • 比如误把“间隔10个数据点”当成了“时间间隔10分钟/小时”,生成了远超需求的datetime刻度(比如534个数据点如果是分钟级间隔,设freq='10T'会生成几千个刻度)
  • 或者不小心写错了起始/结束时间,导致生成了跨度过大的时间序列,瞬间占满内存

额外排查小贴士

  • 先打印len(tick_positions)确认刻度数量:534个数据点隔10个取一次,结果应该在50-60之间,要是出现几万几十万,肯定是逻辑错了
  • 如果用pandas绘图,可以直接在plot()里指定xticks=tick_positions,效果一致
  • 避免依赖自动刻度生成逻辑,手动指定刻度能确保所有图表样式统一,还能杜绝意外的内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:32:10