So erstellen Sie eine "Callable-Funktion"

7

Ich schreibe gerade eine Python-Definition namens f_from_data, die den Interpolations-Fundpunkt in einer Zeile verwendet, soweit ich dies geschrieben habe:

%Vor%

Dies gibt mir, was ich will, ich muss es machen, damit ich eintreten kann:

%Vor%

Wie gehe ich vor? Ich habe mich umgesehen, kann aber nichts finden, weil ich denke, dass es wirklich trivial ist, aber ich vermisse etwas.

    
GBA13 21.12.2014, 18:00
quelle

5 Antworten

12

Verwenden von functools.partial :

%Vor%

partial erstellt ein aufrufbares Objekt mit den ersten beiden bereits gesetzten Argumenten.

    
tmr232 21.12.2014 18:03
quelle
3

interpollate.interp1d gibt ein Callable zurück:

%Vor%

ergibt

%Vor%

Da f_from_data interpolate.interp1d zugewiesen werden kann, benötigen Sie möglicherweise f_from_data überhaupt nicht. Nun stimmt es zwar, dass der x-Bereich nicht auf 10000 Gitterpunkte reduziert wird, und mithilfe von searchsorted wird der x-Wert auf einen nahegelegenen Gitterpunkt gerippt. Im Allgemeinen möchten Sie dies jedoch nicht tun, da interp1d ergibt Sie eine bessere lineare Interpolation ohne es.

    
unutbu 21.12.2014 18:04
quelle
2

Vielleicht so etwas?

%Vor%

Warnung - Ich kenne Matplotlib nicht gut genug, um zu sagen, ob der Code korrekt ist.

    
Noufal Ibrahim 21.12.2014 18:04
quelle
2

Wenn das, was Sie wollen, einfach ist, hier ist es eine einfache Lösung

%Vor%

Wenn Sie lambda

nicht mögen %Vor%

In beiden Fällen müssen Sie sicherstellen, dass f_from_data im Gültigkeitsbereich ist, wenn Sie die Hilfsfunktion definieren.

    
gboffi 21.12.2014 18:59
quelle
1

Der allgemeinere Ansatz wäre, eine Klasse mit einer __call__ -Methode zu erstellen, also etwa so:

%Vor%     
Jaime 21.12.2014 18:32
quelle

Tags und Links