python numeric nan infinite

python - ¿Es posible establecer un número a NaN o infinito?



subplot python (4)

¿Es posible establecer un elemento de una matriz en NaN en Python?

Sí, siempre puede incluir un NaN o inf en una list Python (y similares). Sin embargo, si desea incluirlo en una array (por ejemplo array.array o numpy.array ), entonces el tipo de la matriz debe ser float o complex .

>>> import math >>> import numpy as np >>> arr = np.ones(1, float) # float array >>> arr[0] = math.nan >>> arr array([ nan]) >>> [math.nan, math.inf, -math.inf] # python list [nan, inf, -inf]

El módulo math contiene constantes para nan e inf (desde Python 3.5) así como algunas funciones (disponibles desde Python 2.6) para verificarlas:

math.isnan comprueba si el valor es nan :

>>> math.isnan(math.nan) # nan True

math.isinf comprueba si el valor es infinito (positivo o negativo):

>>> math.isinf(math.inf) # positive infinity True >>> math.isinf(-math.inf) # negative infinity True

Y una función que puede verificar si un número no es inf o nan : math.isfinite (disponible para Python 3.2+)

>>> math.isfinite(math.inf) False >>> math.isfinite(math.nan) False >>> math.isfinite(11.2) True

¿Es posible establecer un elemento de una matriz en NaN en Python?

Además, ¿es posible establecer una variable a +/- infinito? Si es así, ¿hay alguna función para verificar si un número es infinito o no?


Cuando usas Python 2.4, prueba

inf = float("9e999") nan = inf - inf

Me enfrento al problema cuando estaba transfiriendo el archivo simplejson a un dispositivo integrado que ejecutaba Python 2.4, float("9e999") lo float("9e999") . No use inf = 9e999 , necesita convertirlo de cadena. -inf da el -Infinity .


Sí, puedes usar numpy para eso.

import numpy as np a = arange(3,dtype=float) a[0] = np.nan a[1] = np.inf a[2] = -np.inf a # is now [nan,inf,-inf] np.isnan(a[0]) # True np.isinf(a[1]) # True np.isinf(a[2]) # True


Transmitir desde cadena usando float() :

>>> float(''NaN'') nan >>> float(''Inf'') inf >>> -float(''Inf'') -inf >>> float(''Inf'') == float(''Inf'') True >>> float(''Inf'') == 1 False