numpy.nan_to_num#

numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)[источник]#

Замените NaN нулем, а бесконечность большими конечными числами (поведение по умолчанию) или числами, определенными пользователем, с помощью nan, posinf и/или neginf ключевые слова.

Если x является неточным, NaN заменяется нулём или пользовательским значением в nan ключевое слово, бесконечность заменяется наибольшими конечными значениями с плавающей точкой, представимыми x.dtype или пользовательским значением в posinf ключевое слово и -бесконечность заменяется на наименьшие конечные значения с плавающей точкой, представимые x.dtype или пользовательским значением в neginf ключевое слово.

Для комплексных типов данных вышеуказанное применяется к каждой из вещественной и мнимой компонент x отдельно.

Если x не является неточным, тогда замены не производятся.

Параметры:
xскаляр или array_like

Входные данные.

copybool, необязательно

Создавать ли копию x (True) или заменить значения на месте (False). Операция на месте происходит только если приведение к массиву не требует копирования. По умолчанию True.

nanint, float или bool или array_like из int, float или bool, опционально

Значения, используемые для заполнения значений NaN. Если значения не переданы, то значения NaN будут заменены на 0.0.

posinfint, float или bool или array_like из int, float или bool, опционально

Значения, используемые для заполнения положительных бесконечностей. Если значения не переданы, то положительные бесконечности будут заменены очень большим числом.

neginfint, float или bool или array_like из int, float или bool, опционально

Значения, используемые для заполнения значений отрицательной бесконечности. Если значения не переданы, то значения отрицательной бесконечности будут заменены очень малым (или отрицательным) числом.

Возвращает:
выходndarray

x, с замененными неконечными значениями. Если copy равно False, это может быть x самого себя.

Смотрите также

isinf

Показывает, какие элементы являются положительной или отрицательной бесконечностью.

isneginf

Показывает, какие элементы являются отрицательной бесконечностью.

isposinf

Показывает, какие элементы являются положительной бесконечностью.

isnan

Показывает, какие элементы не являются числом (NaN).

isfinite

Показывает, какие элементы конечны (не NaN, не бесконечность)

Примечания

NumPy использует стандарт IEEE для двоичной арифметики с плавающей точкой (IEEE 754). Это означает, что Not a Number не эквивалентно бесконечности.

Примеры

>>> import numpy as np
>>> np.nan_to_num(np.inf)
1.7976931348623157e+308
>>> np.nan_to_num(-np.inf)
-1.7976931348623157e+308
>>> np.nan_to_num(np.nan)
0.0
>>> x = np.array([np.inf, -np.inf, np.nan, -128, 128])
>>> np.nan_to_num(x)
array([ 1.79769313e+308, -1.79769313e+308,  0.00000000e+000, # may vary
       -1.28000000e+002,  1.28000000e+002])
>>> np.nan_to_num(x, nan=-9999, posinf=33333333, neginf=33333333)
array([ 3.3333333e+07,  3.3333333e+07, -9.9990000e+03,
       -1.2800000e+02,  1.2800000e+02])
>>> nan = np.array([11, 12, -9999, 13, 14])
>>> posinf = np.array([33333333, 11, 12, 13, 14])
>>> neginf = np.array([11, 33333333, 12, 13, 14])
>>> np.nan_to_num(x, nan=nan, posinf=posinf, neginf=neginf)
array([ 3.3333333e+07,  3.3333333e+07, -9.9990000e+03, -1.2800000e+02,
        1.2800000e+02])
>>> y = np.array([complex(np.inf, np.nan), np.nan, complex(np.nan, np.inf)])
array([  1.79769313e+308,  -1.79769313e+308,   0.00000000e+000, # may vary
     -1.28000000e+002,   1.28000000e+002])
>>> np.nan_to_num(y)
array([  1.79769313e+308 +0.00000000e+000j, # may vary
         0.00000000e+000 +0.00000000e+000j,
         0.00000000e+000 +1.79769313e+308j])
>>> np.nan_to_num(y, nan=111111, posinf=222222)
array([222222.+111111.j, 111111.     +0.j, 111111.+222222.j])
>>> nan = np.array([11, 12, 13])
>>> posinf = np.array([21, 22, 23])
>>> neginf = np.array([31, 32, 33])
>>> np.nan_to_num(y, nan=nan, posinf=posinf, neginf=neginf)
array([21.+11.j, 12. +0.j, 13.+23.j])