Compare duas arrays em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Compare duas arrays em Python usando o método numpy.array_equal()
  2. Compare duas arrays em Python usando o método numpy.allclose()
  3. Compare duas arrays em Python usando o método numpy.array_equiv()
  4. Compare duas arrays em Python usando o operador == e o método numpy.all()
Compare duas arrays em Python

Neste tutorial, examinaremos vários métodos para comparar dois arrays em Python e verificar se eles são iguais ou não. As duas arrays só serão iguais quando suas dimensões e valores forem iguais. Se as duas arrays tiverem os mesmos valores, mas sua sequência não for a mesma, as arrays não serão consideradas iguais.

Podemos verificar se as duas arrays são iguais ou não em Python usando os seguintes métodos:

Compare duas arrays em Python usando o método numpy.array_equal()

O numpy.array_equal(a1, a2, equal_nan=False) leva dois arrays a1 e a2 como entrada e retorna True se ambos os arrays têm a mesma forma e elementos, e o método retorna False caso contrário . O valor padrão do argumento de palavra-chave equal_nan= é False e deve ser definido como True se quisermos que o método considere dois valores NaN como iguais.

O código de exemplo a seguir demonstra como usar o método numpy.array_equal() para comparar dois arrays em Python.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
print(np.array_equal(a1, a1))
print(np.array_equal(a1, a2))

Resultado:

True
False

Compare duas arrays em Python usando o método numpy.allclose()

O método numpy.allclose(a1, a2, rtol=1e-05, atol=1e-08, equal_nan=False) usa a array a1 e a2 como entrada e retorna True se cada elemento de a1 é igual ao elemento correspondente de a2, ou sua diferença está dentro do valor de tolerância.

O valor da tolerância é calculado usando os argumentos a2, rtol e atol.

atol + rtol * absolute(a2)

O método numpy.allclose() é útil em cálculos onde queremos verificar se os arrays finais são iguais ao array esperado ou não. Podemos usar o método numpy.allclose() para comparar dois arrays em Python da seguinte maneira:

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.allclose(a1, a2))
print(np.allclose(a3, a2))

Resultado:

False
True

Conforme mostrado no código de exemplo acima, a diferença de 0.00001 entre os dois valores é ignorada por padrão. Podemos alterar os valores de atol e rtol para aumentar o valor de tolerância.

Compare duas arrays em Python usando o método numpy.array_equiv()

O método numpy.array_equiv(a1, a2) leva o array a1 e a2 como entrada e retorna True se a forma e os elementos dos arrays forem iguais; caso contrário, retorna False.

Podemos passar os dois arrays para o método numpy.array_equiv() para compará-los em Python. O código de exemplo a seguir demonstra como usar o método numpy.array_equal() para verificar se os dois arrays são iguais em Python.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.array_equiv(a1, a2))
print(np.array_equiv(a3, a2))

Resultado:

False
False

Compare duas arrays em Python usando o operador == e o método numpy.all()

O operador ==, quando usado com as arrays, retorna a matriz com a forma equivalente a ambas as arrays, a matriz retornada contém True em um índice se os elementos de ambas as arrays forem iguais nesse índice, e a matriz será, caso contrário contêm False nesse índice.

Como queremos comparar as duas arrays em vez de cada elemento, podemos usar o método numpy.all() com o operador ==. O método numpy.all() retorna True se todos os elementos do array de entrada ao longo do eixo fornecido são True; caso contrário, retorna False.

Nota
Este método retorna True se ambas as arrays estão vazias ou un array tem um comprimento de 1. E também gerará um erro se a forma de ambas as arrays não for a mesma; é por isso que os métodos mencionados acima devem ser preferidos.

O código de exemplo a seguir demonstra como usar o operador == e o método numpy.all() para comparar os dois arrays em Python.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])

print((a1 == a2).all())
print((a3 == a2).all())

Resultado:

False
False