İstisna nedeni, anddolaylı olarak çağırıyor olmasıdır bool. Önce sol işlenende ve (sol işlenen ise True) sonra sağ işlenende. Yani buna x and yeşdeğerdir bool(x) and bool(y).
Ancak, boola numpy.ndarrayöğesinde (birden fazla öğe varsa) gördüğünüz istisnayı atar:
>>> import numpy as np
>>> arr = np.array([1, 2, 3])
>>> bool(arr)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
bool()Çağrı örtülü olduğu and, aynı zamanda içinde if, while, or, Aşağıdaki örneklerin herhangi ayrıca başarısız olur böylece:
>>> arr and arr
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> if arr: pass
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> while arr: pass
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> arr or arr
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Python'da boolaramaları gizleyen daha fazla işlev ve ifade var , örneğin 2 < x < 10sadece başka bir yazma yolu 2 < x and x < 10. Ve andarayacak bool: bool(2 < x) and bool(x < 10).
Öğeye göre eşdeğer andolacağını np.logical_andbenzer şunu kullanabilirsiniz, fonksiyon np.logical_oriçin eşdeğer olarak or.
Boolean diziler için - ve karşılaştırmalar gibi <, <=, ==, !=, >=ve >numpy üzerinde diziler boolean NumPy diziler dönmek - Ayrıca kullanabilirsiniz öğeye göre bitsel fonksiyonları (ve operatörleri): np.bitwise_and( &operatör)
>>> np.logical_and(arr > 1, arr < 3)
array([False, True, False], dtype=bool)
>>> np.bitwise_and(arr > 1, arr < 3)
array([False, True, False], dtype=bool)
>>> (arr > 1) & (arr < 3)
array([False, True, False], dtype=bool)
ve bitwise_or( |operatör):
>>> np.logical_or(arr <= 1, arr >= 3)
array([ True, False, True], dtype=bool)
>>> np.bitwise_or(arr <= 1, arr >= 3)
array([ True, False, True], dtype=bool)
>>> (arr <= 1) | (arr >= 3)
array([ True, False, True], dtype=bool)
Mantıksal ve ikili işlevlerin tam bir listesi NumPy belgelerinde bulunabilir: