как узнать, сколько аргументов нужно лямбда-функции

Я пытаюсь создать функцию, которая будет выполнять наименьшие квадраты на основе переданной лямбда-функции. Я хочу создать массив нулей длины, равной количеству аргументов, принимаемых лямбда-функцией для начального предположения лямбда-функции. поэтому, если это линейно, я хочу [0,0], а для квадратичного мне нужно [0,0,0].

#polynomial functions
linear = lambda p, x: p[0] * x + p[1]
quadratic = lambda p, x: p[0] * x**2 + p[1] * x + p[2]
cubic = lambda p, x: p[0] * x**3 + p[1] * x**2 + p[2] * x + p[3]

#polynomial functions forced through 0
linear_zero = lambda p, x: p[0] * x 
quadratic_zero = lambda p, x: p[0] * x**2 + p[1] * x 
cubic_zero = lambda p, x: p[0] * x**3 + p[1] * x**2 + p[2] * x

def linFit(x, y,fitfunc):
    errfunc = lambda p, x, y: fitfunc(p, x) - y     

Здесь я хочу создать массив нулей. Но на данный момент p не определено. поэтому len(p)не работает.

    init_p = np.array(zeros(len(p)))  #bundle initial values in initial parameters

    p1, success = optimize.leastsq(errfunc, init_p.copy(), args = (x, y))
    return p1   
5
задан richmb 28 June 2012 в 18:17
поделиться