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