예외의 이유는 and
암시 적으로 호출하기 때문 bool
입니다. 먼저 왼쪽 피연산자에서 (왼쪽 피연산자가이면 True
) 오른쪽 피연산자에서. 따라서 x and y
와 같습니다 bool(x) and bool(y)
.
그러나 bool
on a numpy.ndarray
(하나 이상의 요소를 포함하는 경우)는 본 예외를 throw합니다.
>>> 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()
전화는 암시에 and
,뿐만 아니라에서 if
, while
, or
, 다음 예제 중 하나는 실패합니다 있도록 :
>>> 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()
파이썬에는 bool
호출 을 숨기는 더 많은 함수와 명령문 2 < x < 10
이 있습니다. 예를 들어 또 다른 작성 방법입니다 2 < x and x < 10
. 그리고 and
의지는 전화합니다 bool
: bool(2 < x) and bool(x < 10)
.
요소 현명한 에 대한 상응 and
것 np.logical_and
유사하게 사용할 수있는, 기능 np.logical_or
에 대한 동등하게 or
.
부울 배열의 -와 비교가 좋아 <
, <=
, ==
, !=
, >=
와 >
NumPy와에 배열 부울 NumPy와 배열을 반환 - 당신은 또한 사용할 수있는 요소 현명한 비트 기능 (및 운영자) : np.bitwise_and
( &
연산자)
>>> 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)
및 bitwise_or
( |
연산자) :
>>> 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)
논리 및 이진 함수의 전체 목록은 NumPy 설명서에서 찾을 수 있습니다.