una referencia por paso pasar parametros parametro opcionales lista guardar funciones desempaquetado como python scipy curve-fitting

referencia - paso de parametros python



Adaptando solo un parámetro de una función con muchos parámetros en python (2)

Puede envolver func en un lambda, de la siguiente manera:

def func(x,a,b): return a*x*x + b for b in xrange(10): popt,pcov = curve_fit(lambda x, a: func(x, a, b), x1, x2)

Una lambda es una función anónima, que en Python solo se puede usar para funciones simples de una línea. Básicamente, normalmente se usa para reducir la cantidad de código cuando no es necesario asignar un nombre a la función. Se proporciona una descripción más detallada en la documentación oficial: http://docs.python.org/tutorial/controlflow.html#lambda-forms

En este caso, una lambda se utiliza para corregir uno de los argumentos de func . La función recién creada acepta solo dos argumentos: x y a , mientras que b se fija al valor tomado de la variable b local. Esta nueva función luego pasa a curve_fit como argumento.

En Python tengo una función que tiene muchos parámetros. Quiero ajustar esta función a un conjunto de datos, pero utilizando solo un parámetro, el resto de los parámetros que deseo suministrar por mi cuenta. Aquí hay un ejemplo:

def func(x,a,b): return a*x*x + b for b in xrange(10): popt,pcov = curve_fit(func,x1,x2)

En esto quiero que el ajuste se haga solo para a y que el parámetro b tome el valor de la variable de bucle. ¿Cómo puede hacerse esto?


Hay una opción más simple si está dispuesto / es capaz de editar la función original.

Redefina su función como:

def func(x,a): return a*x*x + b

Luego, simplemente puede ponerlo en su ciclo para el parámetro b:

for b in xrange(10): popt,pcov = curve_fit(func, x1, x2)

Advertencia: la función debe definirse en el mismo script en el que se llama para que funcione.