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

为何出现IndexError:索引3650超出轴0范围(大小为3650)?

索引越界错误原因及修复方法

错误原因分析

  • 你创建的TS数组长度为3650(t_end=3650),而Python/numpy数组的索引从0开始,所以有效索引范围是0到3649。
  • 循环for tt in range(0, len(TS))会让tt遍历0到3649的所有整数。当tt取到最后一个值3649时,代码尝试赋值给TS[tt+1]也就是TS[3650],这个索引超出了数组的有效范围,直接触发IndexError。

修复方法

方法一:缩小循环范围

让循环只遍历到数组倒数第二个索引,确保tt+1不会超出数组边界:

t_end = 3650
TS = np.zeros(t_end)
TS[0] = 288

# 循环范围改为len(TS)-1,tt最大取到3648,tt+1=3649(数组最后一个有效索引)
for tt in range(0, len(TS)-1):
    TS[tt+1] = TS[tt]+(deltat/cw)*((s0/4)*(1-a_earth)+(ea_new[tt]*sigma*(T_earth**4))-(sigma*TS[tt]**4))

方法二:扩大数组容量

把数组长度设为t_end+1,容纳到索引3650:

t_end = 3650
# 数组长度改为t_end+1,支持索引0到3650
TS = np.zeros(t_end + 1)
TS[0] = 288

# 循环范围仍需设为len(TS)-1,避免ea_new数组索引越界
for tt in range(0, len(TS)-1):
    TS[tt+1] = TS[tt]+(deltat/cw)*((s0/4)*(1-a_earth)+(ea_new[tt]*sigma*(T_earth**4))-(sigma*TS[tt]**4))

注意:使用此方法时需确保ea_new数组的长度至少为3650,否则会触发新的索引错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:14:55