Можно ли установить число в NaN или бесконечность?
можно ли установить элемент массива NaN в Python?
кроме того, можно ли установить переменную в +/- бесконечность? Если да, то есть ли функция, чтобы проверить, является ли число Бесконечностью или нет?
4 ответов
Cast из строки с помощью float():
>>> float('NaN')
nan
>>> float('Inf')
inf
>>> -float('Inf')
-inf
>>> float('Inf') == float('Inf')
True
>>> float('Inf') == 1
False
Да, вы можете использовать numpy для этого.
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
можно ли установить элемент массива в NaN в Python?
Да, вы всегда можете включить NaN или inf в python list (и подобные). Однако, если вы хотите включить его в array (например,array.array или numpy.array), то тип массива должны быть float или 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]
на math-модуль содержит константы для nan и inf (начиная с Python 3.5) а также некоторые функции (доступные с Python 2.6), чтобы проверить их:
math.isnan проверяет, является ли значение nan:
>>> math.isnan(math.nan) # nan
True
math.isinf проверяет, является ли значение бесконечностью (положительным или отрицательным):
>>> math.isinf(math.inf) # positive infinity
True
>>> math.isinf(-math.inf) # negative infinity
True
и функция, которая может проверить, является ли число не inf или nan: math.isfinite (доступно для Python 3.2+)
>>> math.isfinite(math.inf)
False
>>> math.isfinite(math.nan)
False
>>> math.isfinite(11.2)
True
при использовании Python 2.4, попробовать
inf = float("9e999")
nan = inf - inf
я сталкиваюсь с проблемой, когда я портировал simplejson на встроенное устройство, на котором работает Python 2.4,float("9e999") исправил. Не используйте inf = 9e999, вам нужно преобразовать его в строку.
-inf дает -Infinity.