numpy.nan_to_num

numpy.nan_to_num(x, copy=True)

Функция nan_to_num() заменяет nan на 0, бесконечность (inf) и минус-бесконечность (-inf) заменяются на наибольшее и наименьшее доступное число с плавающей точкой соответственно.

Параметры:
x - число, массив или подобный массиву объект
Входне данные.
copy - True или False (необязательный)
Значение True (установлено по умолчанию) создает копию x, False заменяет значения исходного массива. Доступно в NumPy с версии 1.13.0.
Возвращает:
результат - массив NumPy или вещественное число
Копия массива x без нечисловых элементов. Если copy = False то это сам массив x. Возвращает число, если на вход подано одно число.

Замечание

Следует учитывать, что если если x содержит значения inf и -inf то они заменяются на наибольшее и наименьшее значение, но только на те которые доступны в используемом типе данных x, например:

>>> import numpy as np
>>> 
>>> a = np.array([-np.inf, np.inf], dtype = np.float16)
>>> np.nan_to_num(a)
array([-65500.,  65500.], dtype=float16)
>>> 
>>> b = np.array([-np.inf, np.inf], dtype = np.float96)
>>> np.nan_to_num(b)
array([-1.1897315e+4932,  1.1897315e+4932], dtype=float96)

Для комплексных чисел данное правило применяется отдельно к каждой действительной и мнимой части.


Примеры

>>> import numpy as np
>>> 
>>> np.nan_to_num([-np.inf, np.nan, np.inf])
array([-1.79769313e+308,  0.00000000e+000,  1.79769313e+308])
>>> 
>>> np.nan_to_num([-1.79769313e+1000,  0.00000000e+000,  1.79769313e+1000])
array([-1.79769313e+308,  0.00000000e+000,  1.79769313e+308])
>>>
>>>
>>> np.nan_to_num(complex(np.nan, np.inf))
1.7976931348623157e+308j
>>> 
>>> np.nan_to_num(complex(np.inf, np.nan))
(1.7976931348623157e+308+0j)
>>> 
>>> np.nan_to_num(complex(np.nan, np.nan))
0j