Как сравнить два массива NumPy (с примерами)


Вы можете использовать следующие методы для сравнения значений двух массивов NumPy:

Метод 1: проверьте, равны ли два массива NumPy по элементам

#test if array A and array B are element-wise equal
np.array_equal (A,B)

Метод 2: проверьте, равны ли два массива NumPy по элементам (в пределах допуска)

#test if array A and array B are element-wise equal (within absolute tolerance of 2)
np.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
np.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
np.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)
np.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)
np.allclose (A, B, atol= 1 )

False

Функция возвращает False , поскольку соответствующие элементы в третьей позиции каждого массива NumPy не находятся в пределах 1 друг от друга.

Примечание.Обратитесь к документации NumPy, чтобы найти полное объяснение функций array_equal и allclose .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в NumPy:

Как сдвинуть элементы в массиве NumPy
Как подсчитать количество вхождений элементов в NumPy
Как рассчитать режим массива NumPy