Wenn Sie überprüfen möchten, ob zwei Arrays dasselbe shape
UND haben elements
, sollten Sie diese verwenden, np.array_equal
da dies die in der Dokumentation empfohlene Methode ist.
In Bezug auf die Leistung erwarten Sie nicht, dass eine Gleichstellungsprüfung eine andere schlägt, da nicht viel Raum für Optimierungen besteht comparing two elements
. Nur um der Sache willen habe ich noch einige Tests gemacht.
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
So ziemlich gleich, dass man nicht über die Geschwindigkeit sprechen muss.
Das (A==B).all()
verhält sich so ziemlich wie das folgende Code-Snippet:
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()
wird abstürzen , wenn A und B unterschiedliche Längen aufweisen . Ab Nummer 1.10 löst == in diesem Fall eine Verfallswarnung aus .