Jika Anda ingin memeriksa apakah dua array memiliki shapeAND yang sama, elementsAnda harus menggunakannya np.array_equalkarena metode ini direkomendasikan dalam dokumentasi.
Dari segi kinerja jangan berharap bahwa pemeriksaan kesetaraan akan mengalahkan yang lain, karena tidak ada banyak ruang untuk dioptimalkan comparing two elements. Demi Tuhan, saya masih melakukan beberapa tes.
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
Jadi hampir sama, tidak perlu berbicara tentang kecepatan.
The (A==B).all()berperilaku cukup banyak seperti potongan kode berikut:
x = [1,2,3]
y = [1,2,3]
print all([x[i]==y[i] for i in range(len(x))])
> True
np.array_equalIME.(A==B).all()akan macet jika A dan B memiliki panjang yang berbeda . Pada numpy 1,10, == memunculkan peringatan penghentian dalam kasus ini .