我有python代码,它生成一组3元组的数字x,y和z。我想使用scipy curve_fit来拟合z = f(x,y)。这是一些非工作代码
A = [(19,20,24), (10,40,28), (10,50,31)]
def func(x,y,a, b):
return x*y*a + b
如何让python将此函数适用于列表A
中的数据?
答案 0 :(得分:10)
func
的第一个参数必须是数据(x和y)。func
的其余参数代表参数。所以你需要稍微修改func
:
def func(data, a, b):
return data[:,0]*data[:,1]*a + b
curve_fit
的第一个参数是函数。data
(x
和y
形式的一个数组)。z
)。a
在这种情况下{。{1}}。)所以,例如:
b
params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess)