Ho il seguente codice:Passo tupla come argomento di input per scipy.optimize.curve_fit
import numpy as np
from scipy.optimize import curve_fit
def func(x, p): return p[0] + p[1] + x
popt, pcov = curve_fit(func, np.arange(10), np.arange(10), p0=(0, 0))
alzerà TypeError: func() prende esattamente 2 argomenti (3 proposta). Bene, sembra azzeccato - curva_fit non interessa il (0, 0) per essere due input scalari. Così ho provato questo:
popt, pcov = curve_fit(func, np.arange(10), np.arange(10), p0=((0, 0),))
Ancora, detto: ValueError: oggetto troppo profonda per allineamento desiderato
Se Ho lasciato come difetto (non specificando p0):
popt, pcov = curve_fit(func, np.arange(10), np.arange(10))
Solleverà IndexError: indice non valido alla variabile scalare. Ovviamente, ha dato alla funzione solo uno scalare per p.
Posso rendere def func (x, p1, p2): restituisce p1 + p2 + x per farlo funzionare, ma con situazioni più complicate il codice sembrerà prolisso e disordinato. Mi piacerebbe davvero tanto se c'è una soluzione più pulita a questo problema.
Grazie!
può questo approccio essere esteso oltre la semplice una tupla di 2 valori? Che dire di 3,4,5, ecc.? – wandadars