【发布时间】:2017-08-10 16:17:02
【问题描述】:
我想使用scipy.optimize.curve_fit 来拟合一个二维数组(一个 10x10 数组),其函数定义如下
def musq(dz,y):
return 1.0/(1.0+y**2*(dz/dz[:,None])**2)
此函数musq 接受一维数组 (dz=np.arange(0.1,1.1,0.1)) 并返回一个二维数组。当我尝试用这个函数拟合数据时,我得到ValueError: object too deep for desired array。我知道这一定与输入和输出形状不匹配有关...
但是,用返回二维数组的一维数组输入拟合函数的正确方法是什么?
我的代码和值如下
from scipy.optimize import curve_fit
dz=np.arange(0.1,1.1,0.1)
dat=np.mgrid[0.1:1.1:0.1,0.1:1.1:0.1][0]
ans=curve_fit(musq,dz,dat)
【问题讨论】:
-
y 是需要约束的值,使用
curve_fit将编辑添加示例