Python — verwirrt von numpy die Funktion stückweise
Ich versuche zu implementieren ist eine stückweise Funktion in Python. Da bin ich mit ganz wenigen Werkzeuge aus numpy, habe ich einfach importieren Sie alles aus ihm (D. H. from numpy import *
). Meine piecewise-Funktion ist definiert als
LinQuad = piecewise( t, [t < 1, t >= 1], [lambda t : t, lambda t : t**2] )
die Ergebnisse in der Fehlermeldung NameError: global name 't' is not defined
. Ich verstehe nicht, warum ich definieren sollte t
— nach all, es ist nicht notwendig, zu definieren t
für einen einfachen lambda-Funktion Lin = lambda t : t
. In einigen Beispielen ist die domain von t
definiert ist, aber ich weiß nicht, bei welchen Werten die Funktion LinQuad
ausgewertet werden. Was ist zu tun?
- "es ist nicht notwendig, definieren Sie t für eine einfache lambda-Funktion
Lin = lambda t : t
" - das ist, weillambda t:
ist ein python-Konstrukt, das definiertt
im Rahmen des Ausdrucks
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin kein numpy-Experte, aber es sieht für mich so aus, Sie erwarten eine stückweise Rückgabe einer Funktion, die können Sie dann an anderer Stelle verwenden. Das ist nicht das, was es tut - es berechnet das Ergebnis der Funktion selbst. Sie könnte wahrscheinlich schreiben ein lambda-Ausdruck, der würde nehmen Sie eine beliebige domain und kehren Sie Ihre Berechnung auf es:
Ich bin nicht allzu sicher über die Definition der condlist boolean-arrays gibt es - vermutlich das ist, etwas bestimmtes zu numpy.
Ist oder wenn für Ihre situation geeignet:
np.piecewise
erfordert, dass Sie Eingabe-Domäne an der Zeit, die Sie es nennen:http://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html
Können Sie nicht wirklich umgehen, wie die Methode angegeben ist. Zwar können Sie mit lambda-Funktionen mit
np.piecewise
nicht generieren, eine Methode, die dann angewendet werden, die gegen beliebige domains.LinQuad
werden bewertet, einige Werte zwischen0
und4
? Oder muss ich die genauen Werte an, dieLinQuad
wird evaluiert? In anderen Worten, wie genau definiere ich die input-Domäne?