Búsqueda de sitios web

¿Cómo comparar dos matrices Numpy?


Numpy es una biblioteca ampliamente utilizada en la programación Python que ofrece formas eficientes y útiles para la manipulación de matrices. Durante el proceso de desarrollo, es común encontrar situaciones en las que es necesario comparar dos matrices Numpy. Esto puede ser para verificar la presencia de elementos idénticos o para detectar las diferencias entre ellos.

En este artículo, analizaremos varios métodos para comparar dos matrices Numpy, incluidos operadores de comparación fundamentales como ==, así como funciones más avanzadas como numpy.array_equal() y numpy.setdiff1d(). Nuestro objetivo es proporcionar una comprensión integral de cómo comparar matrices Numpy en Python y guiarlo en la selección del método apropiado para sus necesidades de comparación específicas.

Método 1

Comparar dos matrices usando el operador == es uno de los métodos más sencillos disponibles. Este operador verifica los elementos de las matrices de entrada en la misma posición y devuelve una matriz booleana. En esta matriz, cada elemento representa si los elementos de las matrices de entrada en la posición correspondiente son iguales o no.

Aquí hay un ejemplo de lo mismo:

Ejemplo

import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2, 4])

print(a == b)

Producción

[ True  True False]

En este caso, el resultado nos dice que los dos primeros elementos de las matrices son iguales, mientras que el tercer elemento no lo es.

Este método es útil al comparar dos matrices con la misma forma, pero no funciona si las matrices tienen formas diferentes.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2])

print(a == b)

Producción

False

En este caso, obtenemos un ValueError porque las dos matrices tienen formas diferentes y no se pueden mostrar juntas.

Método: 2

Otra función útil para comparar matrices es numpy.array_equal(). Esta función devuelve una salida booleana que indica si las dos matrices de entrada tienen la misma forma y elementos.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([1, 2])

print(np.array_equal(a, b))

print(np.array_equal(a, c))

Producción

True
False

En este caso, la primera llamada a numpy.array_equal() devuelve True, ya que las dos matrices tienen la misma forma y elementos. La segunda llamada devuelve False, ya que las matrices tienen formas diferentes.

Si bien numpy.array_equal() es una función útil para comparar dos matrices Numpy para determinar la igualdad exacta, puede que no sea el mejor enfoque cuando se trata de matrices que tienen pequeñas diferencias. En tales casos, numpy.allclose() u otros métodos pueden ser más apropiados.

Ejemplo

Aquí hay un ejemplo que explica lo mismo:

import numpy as np

a = np.array([1.0, 2.0, 3.0])
b = np.array([1.0000001, 2.0000001, 3.0000001])

print(np.array_equal(a, b))

Producción

False

En este caso particular, las dos matrices son casi idénticas, pero numpy.array_equal() produce un resultado Falso ya que los valores no son exactamente iguales.

Método: 3

Si desea verificar los elementos que están presentes en una matriz pero no en la otra, se usa la función numpy.setdiff1d(). Al comparar las dos matrices, esta función devuelve los elementos que están presentes en una matriz pero no en la otra.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([3, 4, 5, 6, 7])

print(np.setdiff1d(a, b))

print(np.setdiff1d(b, a))

Producción

[1 2]
[6 7]

Método: 4

Si queremos comparar dos matrices que pueden tener pequeñas diferencias, podemos usar la función numpy.allclose(). Devuelve un valor booleano que indica si todos los elementos de dos matrices son iguales dentro de una determinada tolerancia.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1.0, 2.0, 3.0])
b = np.array([1.0000001, 2.0000001, 3.0000001])

print(np.allclose(a, b))

Producción

True

En este caso, numpy.allclose() devuelve True, lo que indica que las matrices son iguales.

Método: 5

Si desea encontrar los elementos que dos matrices Numpy tienen en común, puede usar la función numpy.intersect1d(), que devolverá solo los elementos que están presentes en ambas matrices.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

print(np.intersect1d(a, b))

Producción

[3 4]

En este caso, numpy.intersect1d() devuelve los elementos que están tanto en a como en b.

Método: 6

Otro enfoque para comparar dos matrices Numpy es ordenarlas y compararlas por elementos usando la función numpy.array_equiv(). Esta función comprueba si las dos matrices tienen la misma forma y si sus elementos correspondientes son iguales después de ordenar.

Ejemplo

Aquí hay un ejemplo:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([2, 1, 3])

print(np.array_equiv(np.sort(a), np.sort(b)))

Producción

True

En este caso, numpy.array_equiv() devuelve True, lo que indica que las matrices ordenadas son iguales.

Conclusión

En resumen, comparar dos matrices Numpy es una operación crítica en muchas aplicaciones científicas y de análisis de datos. Al aprovechar los diferentes métodos analizados en este artículo, puede comparar matrices en busca de igualdad, similitud y diferencias en una variedad de escenarios. Desde el sencillo operador == hasta la función numpy.array_equiv() más avanzada, cada método tiene sus propias fortalezas y debilidades que lo hacen adecuado para casos de uso específicos. Ya sea que trabaje con conjuntos de datos grandes o pequeños, Numpy proporciona un poderoso conjunto de herramientas para ayudarlo a manipular y analizar sus datos de manera eficiente. Al incorporar estas técnicas en su código Python, puede optimizar su flujo de trabajo y tomar decisiones más informadas basadas en sus datos.

Artículos relacionados: