Si vous voulez vérifier si deux tableaux ont le même shape
ET elements
vous devez utiliser np.array_equal
car c'est la méthode recommandée dans la documentation.
En termes de performances, ne vous attendez pas à ce qu'un contrôle d'égalité en batte un autre, car il n'y a pas beaucoup de place à optimiser comparing two elements
. Juste pour le plaisir, j'ai quand même fait des tests.
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
Donc à peu près égal, pas besoin de parler de vitesse.
Le (A==B).all()
se comporte à peu près comme l'extrait de code suivant:
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 bloque si A et B ont des longueurs différentes . Depuis numpy 1.10, == déclenche un avertissement de dépréciation dans ce cas .