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.

¿Por qué “ndarray.all() es Falso” siempre devuelve Falso en Python?

Estaba pensando en la lógica en Python. Cuando uso any() o all() en un array de numpy y utilizo is False/True siempre obtengo False, pero cuando uso “==”, obtengo la respuesta que espero.

import numpy as np
a = np.array([True,False,True])
a.any() is False

False
a.any() is True
False

pero esto funciona como se espera

a.any() == True

True
a.any() == False
False

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el uso de “is False/True” no funciona como se espera al utilizar any() o all() en una matriz de numpy es porque la palabra clave “is” comprueba si dos objetos son la misma instancia, mientras que “==” comprueba si dos objetos tienen el mismo valor. En el caso de las matrices de numpy, any() y all() devuelven una nueva matriz booleana, que es una instancia diferente que True o False. Por lo tanto, el uso de “is False/True” siempre evaluará como Falso.

    El uso de “==” funciona porque comprueba si los valores de los dos objetos son los mismos. En el caso de a.any() == True, la expresión evalúa a Verdadero porque any() devuelve una matriz booleana con al menos un valor Verdadero, que es equivalente a Verdadero en un contexto booleano.

    Para resumir, al trabajar con matrices de numpy y any()/all(), use “==” en lugar de “is True/False” para comprobar los valores de la matriz booleana.

Comments are closed.