7
votes

Comment produire une "fonction appelable"

Je suis en train d'écrire une définition python appelée f_from_data qui utilise l'interpolation de trouver un point sur une ligne jusqu'à présent, j'ai écrit ceci: xxx

Cela me donne ce que je veux faire ce que je veux faire Pour que je puisse entrer: xxx

Comment puis-je faire cela? J'ai regardé autour de moi mais je n'arrive pas à trouver quoi que ce soit comme je pense que c'est vraiment trivial mais je manque quelque chose de quelque chose.


1 commentaires

FYI, ce processus s'appelle Application de fonction partielle .


5 Réponses :


13
votes

Utilisation de FuncTools.Partial : xxx

partiel créera un objet appelable avec les 2 premiers arguments déjà définis.


0 commentaires

2
votes

Peut-être quelque chose comme ça? XXX

AVERTISSEMENT - Je ne sais pas assez bien pour dire si le code est correct.


0 commentaires

3
votes

interpoler.interp1d renvoie une appelable: xxx

rendements xxx

car f_from_data peut être attribué to interpoler.interp1d , vous n'avez peut-être pas besoin de f_from_data du tout. Maintenant, il est vrai que cela ne bloque pas la x-gamme dans 10000 points de grille et utilisez la recherche pour enregistrer la valeur X sur un point de grille à proximité, mais en général, vous ne voudriez pas le faire quand même depuis Interp1D vous donne une meilleure interpolation linéaire sans elle.


0 commentaires

1
votes

L'approche plus générale serait de créer une classe avec une méthode __ __ , alors quelque chose comme ceci: xxx


2 commentaires

Bien que cela puisse être courant dans d'autres contextes, ce serait extrêmement inhabituel dans le code numpy.


Qu'est-ce qui le rend inhabituel dans le code numpy? C'est la voie, par exemple SCIPY.Interpolate Donne à tous ses travaux d'interpolateurs 1D de retour de la fonction, voir ici , comment numpy.poly1d gère des fonctions d'évaluation polynomial-évaluant, voir ICI , ou Numpy.Vectorize fait des fonctions vectorisées, voir ici .



2
votes

Si ce que vous voulez est simple, voici une solution simple xxx

si vous n'aiment pas lambda xxx

Dans les deux cas, vous devez être sûr que f_from_data est dans la portée lorsque vous définissez la fonction auxiliaire.


0 commentaires