我正在尝试使用 scipy.odrpack 进行曲线拟合,但我在使用 odrpack.ODR 命令时遇到了问题。
这是我写的代码:
def f(x,i):
return i[0]*numpy.exp(-i[1]*x)
a=pandas.read_csv("~/Untitled.csv")
exp=odrpack.Model(f)
data=odrpack.RealData(a['t'],a['c1'])
myodr=odrpack.ODR(data, exp, beta0=[1.,2.])
myoutput=myodr.run()
myoutput.pprint()
但是我收到以下错误(10 是由于数组的长度所致):
OdrError: fcn does not output [10]-shaped array
有谁知道为什么我会收到此错误?
谢谢!
最佳答案
您不小心交换了拟合函数的参数:
def f(x,i):
return i[0]*numpy.exp(-i[1]*x)
什么时候应该
def f(i,x): # note the order of arguments
return i[0]*numpy.exp(-i[1]*x)
关于python - ODR错误: fcn does not output [n]-shaped array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43898093/