Si desea verificar si dos matrices tienen el mismo shape
Y elements
debe usar, np.array_equal
ya que es el método recomendado en la documentación.
En cuanto al rendimiento, no espere que cualquier verificación de igualdad supere a otra, ya que no hay mucho espacio para optimizar comparing two elements
. Solo por el bien, todavía hice algunas pruebas.
import numpy as np
import timeit
A = np.zeros((300, 300, 3))
B = np.zeros((300, 300, 3))
C = np.ones((300, 300, 3))
timeit.timeit(stmt='(A==B).all()', setup='from __main__ import A, B', number=10**5)
timeit.timeit(stmt='np.array_equal(A, B)', setup='from __main__ import A, B, np', number=10**5)
timeit.timeit(stmt='np.array_equiv(A, B)', setup='from __main__ import A, B, np', number=10**5)
> 51.5094
> 52.555
> 52.761
Casi igual, no hay necesidad de hablar sobre la velocidad.
El se (A==B).all()
comporta más o menos como el siguiente fragmento de código:
x = [1,2,3]
y = [1,2,3]
print all([x[i]==y[i] for i in range(len(x))])
> True
np.array_equal
IME.(A==B).all()
se bloqueará si A y B tienen longitudes diferentes . A partir de 1.10 numpy, == genera una advertencia de desaprobación en este caso .