Python使用curve_fit拟合自定义方程参数报错排查
问题排查与修复
核心错误:括号不匹配
你的自定义函数custom_exponential_equation中,np.exp()的调用缺少一个闭合括号,导致代码执行时无法生成合法的浮点数组,直接触发了Result from function call is not a proper array of floats错误。
修复后的代码
import numpy as np from scipy.optimize import curve_fit # Define your custom exponential equation def custom_exponential_equation(X, param1, param2, param3): # X is a 2D array with shape (N, 2), where N is the number of data points # X[:, 0] corresponds to the first independent variable # X[:, 1] corresponds to the second independent variable # 修复括号不匹配问题:给np.exp添加闭合括号 y = param1 * np.exp(param2 * (X[:, 0] * (X[:, 1]**param3))) return y initial_params = [1.0, 1.0, 1.0] # 确保x1是(45,2)的二维数组,y1是(45,)的一维数组 # 若需要测试可取消注释以下示例数据 # x1 = np.random.rand(45, 2) # y1 = np.random.rand(45) # Perform the curve fitting params, _ = curve_fit(custom_exponential_equation, x1, y1, p0=initial_params) print(params)
额外检查点
- 确认
x1的形状确实为(45, 2),y1为(45,)的一维数组,避免因输入维度不匹配引发其他错误。 - 如果拟合时出现收敛问题,可尝试调整初始参数
initial_params,使其更接近真实值。
内容的提问来源于stack exchange,提问作者Deep Roy
相关产品推荐
相关产品推荐

