Вы можете использовать следующие методы для сравнения значений двух массивов 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