HOWTO · NumPy

Compare duas arrays em Python

Este tutorial demonstra como comparar se as duas arrays são iguais em Python

Nesta página

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