Как сравнить два массива numpy: с примерами
Для сравнения значений двух массивов NumPy можно использовать следующие методы:
Метод 1. Проверьте, равны ли два массива NumPy на уровне элемента.
#test if array A and array B are element-wise equal n.p. array_equal (A,B)
Метод 2. Проверьте, равны ли два массива NumPy на уровне элемента (в пределах допуска).
#test if array A and array B are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 )
Следующие примеры показывают, как использовать каждый метод на практике.
Пример 1. Проверьте, равны ли два массива NumPy на уровне элемента
Следующий код показывает, как использовать функцию array_equal() для проверки равенства двух массивов NumPy на уровне элементов:
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 5, 7, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) True
Функция возвращает True , поскольку оба массива NumPy имеют одинаковую длину с одинаковыми значениями в одних и тех же позициях.
Однако функция вернет False , если два массива NumPy имеют одинаковые значения, но находятся в разных позициях:
import numpy as np #create two NumPy arrays with same values but in different positions A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 5, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) False
Пример 2. Проверьте, равны ли два массива NumPy на уровне элемента (в пределах допуска).
В следующем коде показано, как использовать функцию allclose() для проверки равенства двух массивов NumPy на уровне элемента в пределах значения допуска 2 :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 ) True
Функция возвращает True , поскольку все совпадающие элементы каждого массива NumPy находятся в пределах 2 друг от друга.
Например, мы видим, что элементы в третьей и четвертой позициях каждого массива разные, но поскольку каждая пара отличается на 2 значения, функция возвращает true.
Однако если мы изменим аргумент абсолютного допуска (atol) на 1 , функция вернет False :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 1) n.p. allclose (A, B, atol= 1 ) False
Функция возвращает False , поскольку соответствующие элементы в третьей позиции каждого массива NumPy не находятся на расстоянии 1 секунды друг от друга.
Примечание . Обратитесь к документации NumPy для получения полного объяснения функций array_equal и allclose .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в NumPy:
Как перемещать элементы в массиве NumPy
Как подсчитать появление элементов в NumPy
Как рассчитать режим массива NumPy