¿Por qué Numpy.all () y any () dan resultados incorrectos si usa expresiones generadoras?

Trabajando con el código de otra persona, me topé con este problema. Entonces, ¿cuál es la explicación para el comportamiento de numpy?

In [1]: import numpy as np

In [2]: foo = [False, False]

In [3]: print np.any(x == True for x in foo)
True  # <- bad numpy!

In [4]: print np.all(x == True for x in foo)
True  # <- bad numpy!

In [5]: print np.all(foo)
False  # <- correct result

PD. Tengo el código de comprensión de la lista de aquí:Compruebe si la lista contiene solo el elemento x

Respuestas a la pregunta(1)

Su respuesta a la pregunta