J'ai le code suivant:passe comme argument tuple d'entrée pour 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))
Il soulèvera TypeError: func() prend exactement 2 arguments (3 donné). Eh bien, cela semble juste - curve_fit décompacte le (0, 0) pour qu'il y ait deux entrées scalaires. J'ai donc essayé ceci:
popt, pcov = curve_fit(func, np.arange(10), np.arange(10), p0=((0, 0),))
Encore une fois, il a dit: ValueError: objet trop profond pour le tableau désiré
Si je l'ai laissé par défaut (ne pas spécifier p0):
popt, pcov = curve_fit(func, np.arange(10), np.arange(10))
Il va augmenter IndexError: index invalide à la variable scalaire. Évidemment, cela n'a donné à la fonction qu'un scalaire pour p.
Je peux faire def func (x, p1, p2): retourner p1 + p2 + x pour le faire fonctionner, mais avec des situations plus compliquées, le code va paraître bavard et désordonné. J'adorerais vraiment qu'il y ait une solution plus propre à ce problème.
Merci!
cette approche peut être étendue au-delà un tuple de 2 valeurs? Qu'en est-il de 3,4,5, etc? – wandadars