[SciPy-Dev] scipy.optimize.curve_fit does not work with single parameter function

Daniele Nicolodi daniele@grinta....
Tue Sep 28 05:16:40 CDT 2010


I copied the code of scipy.optimize.curve_fit into my data analysis code
to use it on a not so recent versions of scipy available on my systems.
However it does not work when I try to fit a simple function that has
only one parameter, for example:

def func(x, p1):
    return x * p1

The problem is that scipy.optimize.leastsq() returns a list of
parameters values for cases where the function has more than one
parameter it returns a tuple of parameters values, while in the case of
one single parameters it returns a numpy scalar value.

This causes an error in the curve_fit _general_function() and
_weighted_general_function() where the target function is called:

function(xdata, *params)

This works only if params is a python list or tuple.

Also the return value suffers from the same problem. If the target
function has more than one parameter you get a parameters list,
otherwise you get a scalar. It would be more consistent to return always
a list, also because the covariance is always returned as a matrix.

Please ignore this if that has been resolved in more recent version of
scipy, I have acces to 0.7.2 (last available on debian sid).


More information about the SciPy-Dev mailing list