Compruebe si el valor es infinito o NaN en Python

En este artículo, comprobaremos si el valor dado es NaN o Infinity. Esto se puede hacer usando el módulo matemático. Veamos cómo verificar cada valor en detalle.

Compruebe si el valor es NaN

NaN significa » No es un número » y es un tipo de datos numérico que se utiliza como proxy de valores que no están definidos matemáticamente o no se pueden representar. Hay varios ejemplos de ellos como-

  1. 0/0 no está definido y se usa NaN para representarlo.
  2. Sqrt(-ve número) no se puede almacenar como un número real, por lo que se usa NaN para representarlo.
  3. Log(-ve número) no se puede almacenar como un número real, por lo que se usa NaN para representarlo.
  4. El seno inverso o el coseno inverso de un número < -1 o un número > 1 también es NaN.
  5. 0 * inf también conduce a NaN.

Dado que NaN es un tipo en sí mismo, se utiliza para asignar variables cuyos valores aún no están calculados.

Método 1 : para verificar NaN podemos usar la función math.isnan() ya que NaN no se puede probar usando el operador ==.  

Python3

import math
 
 
x = math.nan
print(f"x contains {x}")
 
# checks if variable is equal to NaN
if(math.isnan(x)):
    print("x == nan")
else:
    print("x != nan")
Producción

x contains nan
x == nan

Método 2: NaN no es igual a NaN y, por lo tanto, podemos aprovechar esta propiedad para verificar NaN. El siguiente código lo demuestra.

Python3

import math
 
 
def isNan(number):
     
    # This function compares number to itself.
    # NaN != NaN and therefore it will return
    # true if the number is Nan
    return number != number
 
# Driver Code 
x = math.nan
print(isNan(x))
Producción

True

Comprobar si el valor es infinito

Método 1: para verificar infinito en python, la función utilizada es math.isinf(), que solo verifica infinito. Para distinguir entre infinito positivo y negativo, podemos agregar más lógica que verifique si el número es mayor que 0 o menor que 0. El código muestra esto en acción.

Python3

import math
 
# Function checks if negative or
# positive infinite.
def check(x):
   
    if(math.isinf(x) and x > 0):
        print("x is Positive inf")
     
    elif(math.isinf(x) and x < 0):
        print("x is negative inf")
     
    else:
        print("x is not inf")
 
 
# Creating inf using math module.
number = math.inf
check(number)
 
number = -math.inf
check(number)
Producción

x is Positive inf
x is negative inf

Método 2: Numpy también expone dos API para verificar el infinito positivo y negativo. que son np.isneginf() y np.isposinf()

Python3

# pip install numpy
import numpy as np
 
print(np.isneginf([np.inf, 0, -np.inf]))
print(np.isposinf([np.inf, 0, -np.inf]))

Producción

[False False  True]
[ True False False]

Publicación traducida automáticamente

Artículo escrito por arun singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *