numpy.real_if_close

numpy.real_if_close(a, tol=100)

Функция numpy.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
Смотрите так же: real, imag, angle, conj

Примеры

>>> 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.])