适合3D点蟒蛇

时间:2013-03-14 15:18:46

标签: python scipy

我有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中的数据?

1 个答案:

答案 0 :(得分:10)

  • func的第一个参数必须是数据(x和y)。
  • func的其余参数代表参数。

所以你需要稍微修改func

def func(data, a, b):
    return data[:,0]*data[:,1]*a + b

  • curve_fit的第一个参数是函数。
  • 第二个参数是独立的dataxy 形式的一个数组)。
  • 第三个参数是依赖数据(z)。
  • 第四个参数是对参数值的猜测(a 在这种情况下{。{1}}。)

所以,例如:

b

params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess)