Se você deseja verificar se duas matrizes têm o mesmo shape
AND, elements
você deve usá- np.array_equal
lo, pois é o método recomendado na documentação.
Em termos de desempenho, não espere que nenhuma verificação de igualdade supere outra, pois não há muito espaço para otimizar comparing two elements
. Só por uma questão, eu ainda fiz alguns testes.
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
Tão praticamente igual, não há necessidade de falar sobre a velocidade.
O (A==B).all()
comportamento se comporta praticamente como o seguinte trecho 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()
irá falhar se A e B têm diferentes comprimentos . A partir do numpy 1.10, == gera um aviso de descontinuação neste caso .