您可以
curve_fit为自变量传递多维数组,但随后您
func必须接受相同的内容。例如,调用此数组
X,并将其拆包
x,
y为清楚起见:
import numpy as npfrom scipy.optimize import curve_fitdef func(X, a, b, c): x,y = X return np.log(a) + b*np.log(x) + c*np.log(y)# some artificially noisy data to fitx = np.linspace(0.1,1.1,101)y = np.linspace(1.,2., 101)a, b, c = 10., 4., 6.z = func((x,y), a, b, c) * 1 + np.random.random(101) / 100# initial guesses for a,b,c:p0 = 8., 2., 7.print curve_fit(func, (x,y), z, p0)
适合:
(array([ 9.99933937, 3.99710083, 6.00875164]), array([[ 1.75295644e-03, 9.34724308e-05, -2.90150983e-04], [ 9.34724308e-05, 5.09079478e-06, -1.53939905e-05], [ -2.90150983e-04, -1.53939905e-05, 4.84935731e-05]]))



