İstisna nedeni, and
dolaylı 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 y
eşdeğerdir bool(x) and bool(y)
.
Ancak, bool
a 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 bool
aramaları gizleyen daha fazla işlev ve ifade var , örneğin 2 < x < 10
sadece başka bir yazma yolu 2 < x and x < 10
. Ve and
arayacak bool
: bool(2 < x) and bool(x < 10)
.
Öğeye göre eşdeğer and
olacağını np.logical_and
benzer şunu kullanabilirsiniz, fonksiyon np.logical_or
iç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: