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

Python使用RBF时出现IndentationError错误求助

修复一维RBF插值代码的IndentationError及其他问题

嘿,我来帮你搞定这个缩进错误,顺便修正代码里的其他小问题~

问题原因分析

你遇到的IndentationError: expected an indented block是Python的典型错误——Python靠缩进区分代码块,你的代码里有两处没做好缩进:

  • def func(x1):定义函数后,函数体没有缩进
  • for循环的内部代码块也没有缩进

另外还有几个影响运行的小问题:

  • np.linespace是拼写错误,正确写法是np.linspace
  • 用iloc提取列时,[1]这种写法会返回二维数组,后续插值容易出问题,直接用数字索引更稳妥
  • 从Excel读取的数组可能是二维的,需要转成一维数组才能满足RBF插值的输入要求

修复后的完整代码

# 1-d interpolation
import numpy as np
from scipy import interpolate
import pylab as py
import pandas as pd

# Read the Dataset from Excel File
def func(x1):
    return x1*np.exp(-5.0*x1**2)

dataset = pd.read_excel('Messwerte_FIBRE1.xlsx')
dataset = dataset.drop([0])

# 直接用列索引数字提取,避免返回二维数组
x = dataset.iloc[:, 1]
y = dataset.iloc[:, 9]

# 转换为一维浮点数组,适配RBF插值要求
x1 = np.array(x, dtype=float).flatten()
y1 = np.array(y, dtype=float).flatten()

fvals = func(x1)
# 修正拼写错误:linespace -> linspace
xnew = np.linspace(430, 490, 800)

# 循环代码块正确缩进
for kind in ['multiquadric','inverse multiquadric','gaussian', 'linear','cubic','quintic','thin-plate']:
    newfunc = interpolate.Rbf(x1, fvals, function=kind)
    fnew = newfunc(xnew)
    # 可选:添加绘图代码查看不同插值方法的效果
    py.plot(xnew, fnew, label=kind)

# 展示图例和图像(不需要可以删掉)
py.legend()
py.show()

额外提示

  • 如果你的需求是用y1(Excel里的第10列数据)作为插值目标,把fvals = func(x1)改成fvals = y1就行
  • 确保Excel文件和脚本在同一目录,或者填写完整文件路径
  • 代码里加了绘图逻辑,能直观对比不同插值方法的效果,不需要的话可以删掉绘图相关代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:22