The truth value of an array with more than one element is ambiguous. use a.any() or a.all().
Wenn Sie den folgenden Code ausführen, wird eine spezielle valueError.
import numpy as np a = np.array([1, 2, 3]) b = bool(a) print(b)
Die Ausgabe ist diese Fehlermeldung
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Logical_and() funktion
Die logical_and()
Funktion entspricht dem in Python integrierten logischen Operator “and”. Wenn wir diese Funktion verwenden, gibt das Programm ein Array mit den Werten True und False zurück.
import numpy as np arr1 = np.arange(5) arr2 = np.arange(5, 10) arr3 = np.array(['Erste', 'Zweite', 'Dritte', 'Vierte', 'Fünfte']) mask = np.logical_and(arr1 < 3, arr2 > 3) print(arr3[mask])
Der Code druckte das erste, zweite und dritte Element des Arrays arr3
, weil er unsere Bedingungen überprüfte und herauskam, dass die ersten drei Zahlen unserer Arrays gleichzeitig die Bedingungen erfüllen.
['Erste', 'Zweite', 'Dritte']
Logical_or() function
Die Funktionalität ist die gleiche wie bei der vorherigen. Es hat auch zwei wichtigste Parameter: Eingabearrays. Der einzige Unterschied liegt im Verhalten des Codes, schließlich wollen wir etwas anderes erreichen
import numpy as np arr1 = np.arange(5) arr2 = np.arange(5, 10) arr3 = np.array(['Erste', 'Zweite', 'Dritte', 'Vierte', 'Fünfte']) mask = np.logical_or(arr1 >= 3, arr2 < 3) print(arr3[mask])
Da mindestens eines der Elemente in den Positionen 4 und 5 unserer Arrays unsere Bedingung erfüllt.
['Vierte', 'Fünfte']
Logical And mit &
and Logical Or mit |
Anstatt logical_and()
oder logical_or()
zu schreiben, können wir & und | Symbole.
import numpy as np arr1 = np.arange(5) arr2 = np.arange(5, 10) arr3 = np.array(['Erste', 'Zweite', 'Dritte', 'Vierte', 'Fünfte']) mask = np.array((arr1 < 3) & (arr2 > 3)) print(arr3[mask]) mask = np.array((arr1 >= 3) | (arr2 < 3)) print(arr3[mask])
['Erste', 'Zweite', 'Dritte'] ['Vierte', 'Fünfte']