es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

  1. ¿cuál es la verdadera razón por la que PriorityQueue (o heapq) trabaja internamente?
  2. ¿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()
"""
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que está recibiendo un ValueError al intentar utilizar PriorityQueue (o heapq) con un arreglo de numpy.

    Para solucionar este problema, puede utilizar a.any() o a.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.

Comments are closed.