- The first argument to
func should be data (both x and y). - The remaining arguments to
func represent the parameters.
So you need to change your func bit:
def func(data, a, b): return data[:,0]*data[:,1]*a + b
- The first argument to
curve_fit is the function. - The second argument is the independent
data ( x and y in the form of a single array). - The third argument is the dependent data (
z ). - The fourth argument is the assumption for the parameter value (
a and b in this case.)
So for example:
params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess)
import scipy.optimize as optimize import numpy as np A = np.array([(19,20,24), (10,40,28), (10,50,31)]) def func(data, a, b): return data[:,0]*data[:,1]*a + b guess = (1,1) params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess) print(params)
source share