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

Python3.10.11中IndexError报错原因求助(附代码)

错误原因与解决方案

错误根源

  1. 索引类型错误:enumerate(x) 返回的是形如 (索引整数, x对应元素) 的元组,你把这个元组直接赋值给了 i,然后用 f[i] 去索引numpy数组。而numpy数组只接受整数、切片等合法索引,元组不符合要求,所以触发 IndexError。
  2. 维度不匹配:就算索引没问题,func(x) 是把整个x数组传入函数,返回的是一个长度为20的数组,而你试图把这个数组赋值给f的单个位置,也会出现维度不匹配的错误。

修复方案

方案一:修正循环逻辑

把enumerate的结果解包为索引和对应元素,逐个计算赋值:

import pylab as p
from scipy.optimize import fsolve
def func(x):
    return p.exp(-x)-x

root=fsolve(func,[0])
print("X_true=", root)

x=p.linspace(0,1,20)
f=x.copy()
# 解包索引和x的单个元素
for idx, val in enumerate(x):
    f[idx] = func(val)
p.plot(x,f);p.grid()
p.show()

方案二:利用numpy向量化运算(更高效)

numpy支持数组的批量运算,不需要手动循环,直接把整个x数组传入func即可得到对应结果:

import pylab as p
from scipy.optimize import fsolve
def func(x):
    return p.exp(-x)-x

root=fsolve(func,[0])
print("X_true=", root)

x=p.linspace(0,1,20)
# 直接传入数组,自动批量计算
f = func(x)
p.plot(x,f);p.grid()
p.show()

你之前把=改成:没用,是因为问题核心不是赋值方式,而是索引错误和参数传入的问题,这两种方案都能解决你的问题,正常弹出图像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:37:01