-
Interpolation 2D Python
Bonjour,
Je reviens vers vous pour quelques conseils concernant - comme le titre l'indique - les fonctions d'interpolation de Python.
J'ai une série de données avec 3 paramètres (genre une table des x, une des y, une des z), que l'on peut assimiler à N points de coordonnées (x,y,z).
Je voudrais interpoler ces données afin d'obtenir le 3ème paramètre en en connaissant 2, pour n'importe quelle valeur de x, y ou z, ce qui revient à obtenir une fonction f(x,y) -> z
Pensez vous que scipy.interpolate.interp2d soit le plus adapté ?
Des conseils pour l'utiliser de manière simple mais propre ?
Merci à tous pour votre aide et vos conseils.
NB: j'essaie aussi ça : RectBivariateSpline(x, y, z, kx=3, ky=3, s=0) avec x et y en array 1D et z en array x*y
-
Bon après quelques tests, la fonction interp2d fait assez bien le travail, mais pas suffisamment...
Mon souci c'est que interp2d ne fait qu'interpoler, stricto sensu, et donc si je lui donne des valeurs en dehors des limites minimales et maximales de mes x, y ou z, elle n'est pas vraiment capable d'extrapoler. Elle renvoie tout bêtement la valeur la plus proche parmi les data que je lui ai fournies.
Quelqu'un connaît une manière de paramétrer interp2d pour qu'elle fasse aussi l'extrapolation ?
Ou bien existe-t-il une fonction indépendante particulière pour le faire (je ne la trouve pas, j'ai été déçue que extrap2d n'existe pas :mouarf:) ?
Merci !
M.
-
Salut,
Pour extrapoler (en dehors des données), il faut un "modèle".
Et si vous avez un modèle, les données peuvent aider à en fixer quelques paramètres (interpoler dans ce cas est assez bizarre).
C'est ce qui me vient à l'esprit... mais vous avez d'abord un soucis d'algo. (à rechercher dans la rubrique ad hoc).
- W
-
Je reviens fermer la discussion.
Merci pour ton retour wiztricks.
Bien sûr que dans l'idéal il aurait fallu un 'modèle' mais je n'avais aucune expression de ma fonction à extrapoler donc en fait j'attendais un miracle de Python :mouarf:
J'ai résolu le problème en décomposant ma fonction R => R² en un certain nombre de fonctions R => R (en réalité, même là c'était difficile d'extrapoler en Python ^^)
M.