numpy.real_if_close
numpy.real_if_close(a, tol=100)
Функция real_if_close() переводит комплексные числа в вещественные если мнимая часть "близка к нулю".
"Близость к нулю" определяется как tol*eps
, где eps - это машинная эпсилон.
-
- a - число, массив или подобный массиву объект
- Входные данные.
- tol - число (float)
- Определяет минимальное допустимое значение для мнимой части комплексного числа.
tol
- измеряется в eps (машинных эпсилон).
-
- результат - массив NumPy
- Массив действительных значений x если все мнимые части комплексных чисел меньше
tol*eps
или число, если на вход подано одно число.
Замечание
Значение машинной эпсилон для используемого типа данных можно узнать с помощью np.finfo(float).eps
:
>>> import numpy as np
>>>
>>> np.finfo(np.float).eps
2.220446049250313e-16
>>>
>>> np.finfo(np.float16).eps
0.000977
>>>
>>> np.finfo(np.float96).eps
1.084202172485504434e-19
Примеры
>>> import numpy as np
>>>
>>> eps = np.finfo(float).eps
>>>
>>> 100*eps
2.220446049250313e-14
>>>
>>> np.real_if_close([1 + 1e-14j, 2 + 2e-13j], tol=100)
array([1.+1.e-14j, 2.+2.e-13j])
>>>
>>> 1000*eps
2.220446049250313e-13
>>>
>>> np.real_if_close([1 + 1e-14j, 2 + 2e-13j], tol=1000)
array([1., 2.])