РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
194 of 541 menu

Функция isclose

Функция isclose выполняет поэлементное сравнение двух массивов на приближённое равенство. Она возвращает логический массив, указывающий, какие элементы находятся достаточно близко друг к другу с учётом заданных допусков. Функция особенно полезна при работе с числами с плавающей точкой, где точное сравнение может давать ложные результаты из-за ошибок округления. Первым и вторым параметрами передаются сравниваемые массивы. Третьим параметром rtol задаётся относительный допуск (по умолчанию 1e-05), четвёртым параметром atol задаётся абсолютный допуск (по умолчанию 1e-08). Пятым параметром equal_nan указывается, следует ли считать значения NaN равными (по умолчанию False).

Синтаксис

np.isclose(arr1, arr2, rtol=1e-05, atol=1e-08, equal_nan=False)

Пример

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

import numpy as np res = np.isclose(0.1 + 0.2, 0.3) print(res)

Результат выполнения кода:

True

Пример

Сравним два массива с поэлементной проверкой на приближённое равенство:

import numpy as np arr1 = np.array([1.0, 2.0, 3.0, 4.0]) arr2 = np.array([1.0000001, 2.0000002, 3.0000003, 4.0000004]) res = np.isclose(arr1, arr2) print(res)

Результат выполнения кода:

[ True True True True]

Пример

Продемонстрируем влияние параметра atol на результат сравнения. Увеличим абсолютный допуск, чтобы считать элементы равными при большей разнице:

import numpy as np arr1 = np.array([1.0, 2.0, 3.0]) arr2 = np.array([1.1, 2.2, 3.3]) res = np.isclose(arr1, arr2, atol=0.3) print(res)

Результат выполнения кода:

[ True True True]

Пример

Покажем, как работает сравнение с NaN. По умолчанию NaN не равны друг другу, но с параметром equal_nan это можно изменить:

import numpy as np arr1 = np.array([1.0, np.nan, 3.0]) arr2 = np.array([1.0, np.nan, 3.0]) res_default = np.isclose(arr1, arr2) res_equal_nan = np.isclose(arr1, arr2, equal_nan=True) print("Default behavior:", res_default) print("With equal_nan=True:", res_equal_nan)

Результат выполнения кода:

Default behavior: [ True False True] With equal_nan=True: [ True True True]

Пример

Используем isclose для фильтрации элементов массива, которые близки к заданному значению:

import numpy as np arr = np.array([1.0, 1.0001, 2.0, 2.0001, 3.0]) target = 2.0 mask = np.isclose(arr, target, atol=0.001) res = arr[mask] print(res)

Результат выполнения кода:

[2. 2.0001]

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

  • функцию allclose,
    которая проверяет, все ли элементы двух массивов близки друг к другу
  • функцию equal,
    которая выполняет поэлементное сравнение массивов на точное равенство
  • функцию array_equal,
    которая проверяет полное равенство двух массивов
  • функцию array_equiv,
    которая проверяет эквивалентность формы и элементов массивов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить