Como comparar dois arrays numpy: com exemplos
Você pode usar os seguintes métodos para comparar os valores de duas matrizes NumPy:
Método 1: teste se duas matrizes NumPy são iguais no nível do elemento
#test if array A and array B are element-wise equal n.p. array_equal (A,B)
Método 2: teste se duas matrizes NumPy são iguais no nível do elemento (dentro de uma tolerância)
#test if array A and array B are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 )
Os exemplos a seguir mostram como usar cada método na prática.
Exemplo 1: teste se duas matrizes NumPy são iguais no nível do elemento
O código a seguir mostra como usar a função array_equal() para testar se duas matrizes NumPy são iguais no nível do elemento:
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
A função retorna True porque ambas as matrizes NumPy têm o mesmo comprimento com os mesmos valores nas mesmas posições.
No entanto, a função retornará False se os dois arrays NumPy tiverem os mesmos valores, mas em posições diferentes:
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
Exemplo 2: teste se duas matrizes NumPy são iguais no nível do elemento (dentro da tolerância)
O código a seguir mostra como usar a função allclose() para testar se duas matrizes NumPy são iguais no nível do elemento dentro de um valor de tolerância de 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
A função retorna True , pois os elementos correspondentes entre cada matriz NumPy estão todos dentro de 2 um do outro.
Por exemplo, vemos que os elementos na terceira e quarta posições de cada array são diferentes, mas como cada par está separado por 2 valores, a função retorna verdadeiro.
No entanto, se alterarmos o argumento da tolerância absoluta (atol) para 1 , a função retornará 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
A função retorna False , pois os elementos correspondentes na terceira posição de cada array NumPy não estão a 1s de distância um do outro.
Nota : Consulte a documentação do NumPy para uma explicação completa das funções array_equal e allclose .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no NumPy:
Como mover elementos em um array NumPy
Como contar ocorrências de elementos em NumPy
Como calcular o modo do array NumPy