HOWTO · Python
Negation eines booleschen Wertes ermitteln in Python
In diesem Tutorial wird gezeigt, wie ein Boolean in Python negiert wird.
Auf dieser Seite
Mit Pythons not-Operator lässt sich der Wahrheitswert eines skalaren Ausdrucks umkehren. Für ein NumPy-Boolean-Array eignet sich eine elementweise Operation wie ~ oder numpy.logical_not(). Auch die NumPy-Funktionen bitwise_not() und invert() kehren die Elemente eines Boolean-Arrays um.
Mit dem Operator not einen booleschen Wert in Python negieren
Der Operator not prüft zuerst den Wahrheitswert seines Operanden und gibt anschließend einen booleschen Wert zurück: Aus True wird False und aus False wird True. Er akzeptiert auch Werte, die selbst keine booleschen Werte sind. Zum Beispiel ergibt not 1 den booleschen Wert False, weil 1 als wahr gilt. Das Ergebnis ist der boolesche Wert False, nicht die Ganzzahl 0.
Dieses Beispiel kehrt eine Bedingung um und gibt den resultierenden booleschen Wert aus:
a = 1
print(bool(a))
print(not a)
Mit der Funktion operator.not_() aus dem Modul operator einen booleschen Wert in Python negieren
Die Funktion operator.not_() aus der Standardbibliothek ist das aufrufbare Gegenstück zu Pythons not-Operator. Sie prüft den Wahrheitswert ihres Arguments und gibt einen booleschen Wert zurück. Verwenden Sie sie, wenn eine Operation als Funktion übergeben werden muss, etwa an map() für eine Liste:
import operator
values = [True, True, False, True, False]
print(operator.not_(True))
print(list(map(operator.not_, values)))
map() wendet die übergebene Funktion auf jedes Element des Iterables an. In diesem Beispiel ist jedes Listenelement ein boolescher Wert; die resultierende Liste enthält jeweils den entgegengesetzten Wert.
Mit dem Operator ~ boolesche Werte eines NumPy-Arrays in Python negieren
Bei einem NumPy-Array mit Boolean-Datentyp führt der Operator ~ elementweise eine bitweise Invertierung aus: Jedes True wird zu False und jedes False zu True:
import numpy as np
values = np.array([True, True, False, True, False])
print(~values)
Dieses Verhalten bei Boolean-Arrays eignet sich zum Umkehren einer Maske. Python-Ganzzahlen sind keine booleschen Werte: Bei einer Ganzzahl führt ~ eine bitweise Ganzzahl-Invertierung aus. Verwenden Sie den Operator daher nicht als Ersatz für die Negation des Wahrheitswerts eines skalaren Ausdrucks.
Mit der NumPy-Funktion bitwise_not() einen booleschen Wert negieren
numpy.bitwise_not() ist die Funktionsform der bitweisen Operation. Auf ein Boolean-Array angewendet, invertiert sie jedes Element und liefert dasselbe elementweise Boolean-Ergebnis wie ~:
import numpy as np
values = np.array([True, True, False, True, False])
print(np.bitwise_not(values))
Verwenden Sie diese Funktion, wenn eine benannte NumPy-Operation gut zu Ihrem Code passt. Sie funktioniert auch mit einem einzelnen NumPy-Boolean-Wert.
Mit der NumPy-Funktion invert() einen booleschen Wert in Python negieren
numpy.invert() ist eine weitere Bezeichnung für NumPys elementweise bitweise Invertierung. Bei Boolean-Arrays verhält sie sich wie bitwise_not() und ~:
import numpy as np
values = np.array([True, True, False, True, False])
print(np.invert(values))
Wählen Sie die Schreibweise, die die Operation in Ihrem Code am klarsten ausdrückt. Wie bei ~ führt invert() auf Ganzzahldaten eine bitweise Invertierung aus und keine Negation des booleschen Wahrheitswerts.
Mit der NumPy-Funktion logical_not() einen booleschen Wert in Python negieren
numpy.logical_not() führt eine elementweise logische Negation aus. Bei einem Boolean-Array liefert sie dieselben Werte wie die zuvor beschriebenen bitweisen Invertierungsfunktionen; ihr Name hebt jedoch die logischen Wahrheitswerte hervor:
import numpy as np
values = np.array([True, True, False, True, False])
print(np.logical_not(values))
Verwenden Sie für einen skalaren Python-Ausdruck not. Für ein Boolean-Array liefert eine dieser NumPy-Operationen das entsprechende elementweise Array-Ergebnis.