programing

값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.

newsource 2022. 9. 25. 00:27

값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다.

let let 렛츠고xNumPy 배 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 ★★★★★★★★★★★★★★★★★」bBoolean 어레이입니다.(a - b).any() ★★★★★★★★★★★★★★★★★」(a - b).all()★★★★★★ 。


근거

. 즉, NumPy는 NumPy를 할 수 .True어떤 요소라도True '하다, 하다, 하다'라는 뜻일 수도 요.True모든 요소가 그렇다면True , 「」True배열의 길이가 0이 아닌 경우 세 가지 예를 들어 보겠습니다.

이 다를 수 NumPy를 했습니다.ValueErrorBoolean 텍 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를 호출합니다.boolbool(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