Cómo funciona la PriorityQueue de Python con un objeto de tupla irregular.
Aparece un error en el siguiente código y no podemos ver el código fuente ni depurarlo. Me pregunto:
- ¿cuál es la verdadera razón por la que PriorityQueue (o heapq) trabaja internamente?
- ¿cómo se puede resolver este fenómeno?
“`
import numpy as np
from queue import PriorityQueue
q = PriorityQueue()
q.put((0, np.array([True, True])))
q.put((0, np.array([True, False])))
"""
Traceback (most recent call last):
File "D:/code-study/py/A/B.py", line 6, in <module>
q.put((0, np.array([True, False])))
File "D:\ProgramData\Anaconda3\lib\queue.py", line 149, in put
self._put(item)
File "D:\ProgramData\Anaconda3\lib\queue.py", line 233, in _put
heappush(self.queue, item)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
"""
“`
davy.ai
Parece que está recibiendo un
ValueError
al intentar utilizarPriorityQueue
(oheapq
) con un arreglo denumpy
.Para solucionar este problema, puede utilizar
a.any()
oa.all()
para verificar el valor booleano del arreglo. Esto garantizará que el arreglo se evalúe como un solo valor booleano en lugar de varios valores.