Como comparar valores de duas matrizes

Este artigo se concentra na comparação feita usando NumPy em matrizes. Comparar dois arrays NumPy determina se eles são equivalentes, verificando se todos os elementos em cada índice correspondente são iguais.

Método 1:

Geralmente usamos o ==operador para comparar duas matrizes NumPy para gerar um novo objeto de matriz. Chame ndarray.all() com o novo objeto array como ndarray para retornar True se os dois arrays NumPy forem equivalentes.

import numpy as np    an_array = np.array([[1, 2], [3, 4]]) another_array = np.array([[1, 2], [3, 4]])    comparison = an_array == another_array equal_arrays = comparison.all()    print(equal_arrays)

Resultado:

Como comparar valores de duas matrizes

Arrays. O método equals() não compara recursivamente se um array contém outro array em outro Arrays. O método deepEquals() compara recursivamente se um array contém outro array.

Arrays.equals (Object [], Object []) 

Sintaxe:

public static boolean equals(int[] a, int[] a2)

Parâmetros:

  • a - uma matriz a ser testada quanto à igualdade
  • a2 - a outra matriz a ser testada quanto à igualdade

Retorna: verdadeiro se as duas matrizes forem iguais

  • Retorne True se as matrizes forem iguais umas às outras.
  • Se ambas as matrizes contiverem um número igual de elementos e o mesmo elemento em cada índice.
  • Além disso, se os dois arrays forem nulos, eles serão considerados iguais.
  • O método Arrays.equals() não compara recursivamente se um array contém outro array.
  • Em todos os outros casos, ele retorna False.

Array.deepEquals (Object [], Object [])

Sintaxe:

public static boolean deepEquals(Object[] o1, Object[] o2) o1 = First Array to test for Equality o2 = Second Array to test for Equality
  • Retorne True se as duas matrizes forem iguais uma à outra.
  • Se ambas as matrizes contiverem o mesmo número de elementos e o mesmo elemento em cada índice.
  • Além disso, os dois arrays são nulos, então eles são considerados iguais.
  • Além disso, se o elemento aninhado for novamente array, os elementos do array aninhado também são comparados de maneira iterativa.
  • O método Arrays.deepEquals() compara recursivamente se uma matriz contiver outra matriz.

Principais diferenças:

Se em qualquer Array, um item for outro Array, a chamada para equals() vai para java.lang.Object equals(), que compara a referência de dois Object e não realiza comparação profunda e falha na comparação lógica no caso de Array aninhado .

Por outro lado, o método Arrays.deepEquals() executa várias verificações e chama Arrays.equals() para comparação sem matriz e chama recursivamente Arrays.deepEquals() para comparação de tipo de matriz, o que permite comparar matrizes aninhadas logicamente em Java .  

Observação: é sempre recomendável usar Arrays.equals() para comparar Array não aninhado e Arrays.deepEquals() para comparar Array aninhado, já que Array.equals() é mais rápido do que Arrays.deepEquals() no caso de não aninhado Variedade.

Ilustração de equals() em java:

// Java program to compare two arrays // using .equals() method import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { int[] A = { 1, 2, 3, 4, 5 }; int[] B = { 1, 2, 3, 4, 5 }; int[] C = { 2, 1, 4, 3, 5 }; // Comparing two arrays A and B using .equals() if (Arrays.equals(A,B)) System.out.println( "Array A and Array B is equal"); else System.out.println( "Array A and Array B is not equal"); if (Arrays.equals(A, C)) System.out.println( "Array A and Array C is equal"); else System.out.println( "Array A and Array C is not equal"); } }

SaídaMatriz A e Matriz B são iguais Array A e Array C não são iguais

Abaixo está a ilustração de deepEquals() em java: -

// Java program to compare two arrays // using .deepEquals() method import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { int[][] A = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } }; int[][] B = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } }; int[][] C = { { 3, 4, 5 }, { 4, 5, 6 }, { 7, 2, 4 } }; // Comparing A and B arrays using .deepEquals() method if (Arrays.deepEquals(A, B)) System.out.println( "Array A and Array B is equal"); else System.out.println( "Array A and Array B is not equal"); if (Arrays.deepEquals(A, C)) System.out.println( "Array A and Array C is equal"); else System.out.println( "Array A and Array C is not equal"); } }

SaídaMatriz A e Matriz B são iguais Array A e Array C não são iguais

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.

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