Я определил функцию с 5 параметрами. Я пытаюсь привести свои данные в соответствие с определенной моделью, но у меня уже есть значения beta и l_f, поэтому я использую ключевое слово lambda, чтобы соответствовать только некоторым параметрам. Я должен соответствовать данным несколько раз, и я использую для l oop, чтобы сделать это. Каждый раз, когда мы вводим для l oop, значения бета и l_f меняются (они хранятся в массиве). Проблема в том, что при запуске кода ниже форма массива не совпадает. Есть идеи, как решить эту проблему и заставить код работать?
def richards(t, beta, l_f, nu, k, t_m):
denom = 1 + nu * np.exp(-k * (t - t_m))
return beta + l_f / np.power(denom, 1/nu)
coords = [(0, 0), (1, 1), (16, 24), (20, 12), (24, 40), (31, 47)]
params = np.zeros((len(coords), 5))
for i, (r, c) in enumerate(coords):
params[i, :] = curve_fit(
f = lambda t, nu, k, t_m: richards(t, betas[i], lfs[i], nu, k, t_m),
xdata = ts,
ydata = plates[0, r, c]
)[0]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-344-dc9708b2feb4> in <module>
7 xdata = ts,
8 ydata = plates[0, r, c]
----> 9 )[0]
ValueError: could not broadcast input array from shape (3) into shape (5)