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