Ads by ProfitSence
Close

Wie man es repariert "ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()”

Last Updated on Sonntag 9. Okt. 2022

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']

			
	

Referenzen