다음 코드가 ValueError를 발생시키는 이유를 설명해 주실 수 있습니까?힙 큐에 numpy 배열 추가
import heapq
import numpy as np
a = np.ones((2, 2), dtype=int)
states = []
heapq.heappush(states, (0, a))
heapq.heappush(states, (0, a.copy()))
오류 메시지는 다음과 같습니다
Traceback (most recent call last):
File "x.py", line 8, in <module>
heapq.heappush(states, (0, a.copy()))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
힙 잘 작동 a.copy()
에 추가하지 않고 그것을 실행, 후속/두 번째는 어떤 이유로 문제입니다. 나는 [True, False, True]
의 배열과 함께 알 수없는 진리 값 측면이 있음을 이해한다 그에서 하나의 True
또는 False
을 결정하는 것은 불가능하다고,하지만 왜 heapq
은 그렇게 할 필요합니까? 특히 두 번째 경우에만?
. 힙 요소는 튜플이며 튜플의 첫 번째 항목은 동일하므로 두 번째 요소를 비교합니다. 두 번째 요소를 비교해도 부울로 해석 될 수있는 것은 아닙니다. – user2357112
'heapq.heappush (heap, (x, y))'는 "우선 순위가'x' 인"y "를 푸시하라는 의미가 아닙니다. 그것은 "push thing'(x, y)'"를 의미합니다. 별도의 우선 순위와 요소가 없습니다. 요소가 있습니다. – user2357112