"func () отсутствует 3 обязательных позиционных аргумента: 'b', 'c' и 'd'" - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь вписать гауссиан в следующий набор данных (не могу вставить все, но, надеюсь, достаточно строк)

2.738237424 0.1956847
2.742886384 0.1956847
2.747535344 0.1956847
2.752184304 0.1956847
2.756833264 0.1776788
2.761482224 0.1956847
2.766131184 0.1956847
2.770780144 0.1776788
2.775429104 0.1776788
2.780078064 0.1956847
2.784727024 0.1956847
2.789375984 0.1956847
2.794024944 0.1776788
2.798673904 0.1776788
2.803322862 0.1956847

Вот мой код: x = data [590: 880,0] y = data [590: 880,1]

error = np.repeat(0.001, (880 - 590))

# Model object
def func(x, a, b, c, d):
    return a*np.exp(-(x-b)**2/c**2) + d

quad_model = odr.Model(func)

 # Create a RealData object
dataset = odr.RealData(x, y, sx=error)

# Set up ODR with the model and data.
odr = odr.ODR(dataset, quad_model, beta0=[-0.6, 3.7, -0.4, 0.2])

Я получаю сообщение «func () отсутствует 3 обязательных позиционных аргумента:« b »,« c »и« d ».знаете, что происходит?

Спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

Документация для odr.Model гласит, что fcn принимает только два аргумента.

Вы определили func с 5 обязательными аргументами, поэтому Python выдает ошибку, поскольку модель внутренне пытается вызвать функцию с 5 аргументами только с 2 аргументами.

...