Numpy 배열과 관련된 비교 식에 Python 부울 연산자 (not
, and
, or
)를 사용하려고하면 대개 다음과 같은 오류 메시지가 나타납니다.
>>> x = np.arange(-5, 5)
>>> (x > -2) and (x < 2)
Traceback (most recent call last):
File "<ipython-input-6-475a0a26e11c>", line 1, in <module>
(x > -2) and (x < 2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
이러한 비교는, 파이썬에서 다른 비교 반대로, 논리 값의 배열보다는 하나의 논리 값을 생성 (하지만 어쩌면 당신은 이미 것을 알고 있었다) 때문이다
:에 대한 해결책의
>>> x > -2
array([False, False, False, False, True, True, True, True, True, True], dtype=bool)
>>> x < 2
array([ True, True, True, True, True, True, True, False, False, False], dtype=bool)
부분을 당신의 문제가 아마도 을 np.logical_and
으로 바꿔서 np.bool
의 두 배열을 통해 AND 연산을 브로드 캐스팅합니다.
>>> np.logical_and(x > -2, x < 2)
array([False, False, False, False, True, True, True, False, False, False], dtype=bool)
>>> x[np.logical_and(x > -2, x < 2)]
array([-1, 0, 1])
그러나, 부울 이러한 배열은 일반 파이썬 목록에 인덱스로 사용할 수 없습니다, 그래서 당신은 배열에 그 변환해야 : 나는 이전에 코멘트에 말했듯
rbs = np.array([ish[4] for ish in realbooks])
어떤 줄에서 오류가 발생합니까? 또한 실제로 실행되도록 코드의 형식을 지정하십시오. –
var의 값을 출력하면 도움이됩니다. 추측 해 보면, 문제는 줄이고있는 문자열/float/text replaced 변수에 있습니다 ... 원래의 데이터는 그 일련의 연산을 요구하는 것처럼 보입니까? – abought