값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.
let let 렛츠고x
NumPy 배 num num num num num num 。음음음:
(x > 1) and (x < 3)
다음 오류 메시지를 표시합니다.
값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.
이거 어떻게 고쳐야 돼요?
ifa
★★★★★★★★★★★★★★★★★」b
배열, Boolean NumPy " " 입니다.&
operation: )을 반환한다)을 합니다.
a & b
부울 배열을 반환합니다.이 값을 단일 부울 값으로 줄이려면 다음 중 하나를 사용합니다.
(a & b).any()
또는
(a & b).all()
" "의 경우: "a
★★★★★★★★★★★★★★★★★」b
비 Boolean 어레이입니다.(a - b).any()
★★★★★★★★★★★★★★★★★」(a - b).all()
★★★★★★ 。
근거
. 즉, NumPy는 NumPy를 할 수 .True
어떤 요소라도True
'하다, 하다, 하다'라는 뜻일 수도 요.True
모든 요소가 그렇다면True
, 「」True
배열의 길이가 0이 아닌 경우 세 가지 예를 들어 보겠습니다.
이 다를 수 NumPy를 했습니다.ValueError
Boolean 텍 boolean boolean boolean boolean boolean boolean boolean boolean 。「 」의 and
는 (의 numpy를 으로써) 됩니다.__bool__
Python3의 경우__nonzero__
Python2).
저도 같은 문제가 있었습니다(다양한 조건을 가진 인덱싱이 특정 날짜 범위의 데이터를 찾는 경우).(a-b).any()
★★★★★★★★★★★★★★★★★」(a-b).all()
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★♪
또는 원하는 기능에 최적인 다른 솔루션을 찾았습니다(어레이를 인덱싱하려고 할 때 요소가 여러 개 있는 어레이의 실제 값은 양면성이 있습니다).
위의 권장 코드를 사용하는 대신 다음을 사용하십시오.
numpy.logical_and(a, b)
는 「」입니다.and
으로 부르다bool
에서 첫 번째로 가 「」인 )True
오른쪽 오퍼랜드에 있습니다. ★★★★★★★★★★★★★★★★★.x and y
bool(x) and bool(y)
, 「」, 「」는bool
numpy.ndarray
되어 있는 는본 (예외는 없습니다.) , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 등입니다.
>>> 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()
에는 Python을 더 많은 .bool
: 「」, 「」등)2 < x < 10
는 또 이다.2 < x and x < 10
★★★★★★★...and
를 호출합니다.bool
bool(2 < x) and bool(x < 10)
.
에 대한 요소별 등가and
함수가 될 수 있습니다. 마찬가지로 다음과 같이 사용할 수 있습니다.or
.
부울 어레이의 경우 - 및 다음과 같은 비교<
,<=
,==
,!=
,>=
그리고.>
NumPy 배열에서는 부울 NumPy 배열을 반환합니다. 요소별 비트 단위 함수(및 연산자)를 사용할 수도 있습니다.&
오퍼레이터)
>>> 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)
및 (|
연산자):
>>> 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 문서에서 확인할 수 있습니다.
함께 일한다면pandas
이 문제를 해결한 것은 NA 값을 가지고 있을 때 계산을 하려고 했다는 것입니다.해결책은 다음과 같습니다.
df = df.dropna()
그리고 그 후 계산은 실패했습니다.
@ZF007의 답변을 예로 들자면, 이것은 당신의 질문에 전체적으로 답하는 것이 아니라 같은 오류에 대한 해결책이 될 수 있습니다.스택 오버플로우에서 이 오류 메시지에 대한 직접적인 해답을 찾지 못했기 때문에 여기에 게시합니다.
어레이가 비어 있는지 여부를 확인할 때 오류가 나타납니다.
if np.array([1,2]): print(1)
-->ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
.if np.array([1,2])[0]: print(1)
--> ValueError는 없지만:if np.array([])[0]: print(1)
-->IndexError: index 0 is out of bounds for axis 0 with size 0
.if np.array([1]): print(1)
--> ValueError는 없지만 요소가 많은 어레이에서는 도움이 되지 않습니다.if np.array([]): print(1)
-->DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use 'array.size > 0' to check that an array is not empty.
이 경우:
if np.array([]).size: print(1)
에러를 해결했습니다.@loki의 코멘트를 인용하면, 보다 비토닉한 것을 생각할 수도 있습니다.
if np.array([]) is not None: print(1)
의 에러 는, 「」라고 하는 됩니다.if-statement
비교는 bool이나 int와 같은 배열이 있는 곳에서 이루어집니다.예를 들어 다음과 같습니다.
... code snippet ...
if dataset == bool:
....
... code snippet ...
이 절에는 데이터 집합이 어레이로 지정되며, bool은 "오픈 도어"입니다. True
★★★★★★★★★★★★★★★★★」False
.
가 「」에 랩 .try-statement
하면 ''와 함께 받을 수 있어요.except Exception as error:
" " " 러입이이입이이 。
요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.
이 에러는, 테스트중에 발생했습니다.아래의 에러가 있는 코드는 다음과 같습니다.
pixels = []
self.pixels = numpy.arange(1, 10)
self.assertEqual(self.pixels, pixels)
이 코드가 반환되었습니다.
값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.
numpy 메서드 배열로 반환된 오브젝트를 목록으로 단정할 수 없기 때문입니다.
솔루션 numpy 오브젝트를 목록으로 변환하기 위해 내가 선택한 방법은 그 방법을 사용하는 것이었다.toList()
음음음같 뭇매하다
pixels = []
self.pixels = numpy.arange(1, 10).toList()
self.assertEqual(self.pixels, pixels)
일반적으로 두 개의 단일 숫자를 비교할 때 Python 일반 코드가 올바르게 작동하지만 배열 안에는 병렬로 처리해야 하는 몇 개의 숫자(1개 이상의 숫자)가 있습니다.
예를 들어 다음과 같이 가정합니다.
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
.if b >= a:
면,,는a
★★★★★★★★★★★★★★★★★」b
는, 「」의 모든 가, 「」의 요소도 아닌지를 의미합니다.b
.a
하다
if (b >= a).all():
print("b is greater than a!")
언급URL : https://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array-with-more-than-one-element-is-ambiguous
'programing' 카테고리의 다른 글
도커 컨테이너에 mariaDB를 입력하는 방법 (0) | 2022.09.26 |
---|---|
3가지 다른 점은 (0) | 2022.09.25 |
요청이 있는 python에서 대용량 파일 다운로드 (0) | 2022.09.25 |
Ruby on Rails 3 소켓 '/tmp/mysql'을 통해 로컬 MySQL 서버에 연결할 수 없습니다.OSX에서 '삭 (0) | 2022.09.25 |
C에서 extern 키워드를 올바르게 사용하는 방법 (0) | 2022.09.25 |