Якщо ви хочете перевірити, чи мають два масиви однакові shape
І elements
вам слід скористатися, np.array_equal
оскільки це метод, рекомендований у документації.
Не очікуйте, що будь-яка перевірка рівності переможе іншу, оскільки для оптимізації не так багато місця comparing two elements
. Тільки заради, я все-таки робив кілька тестів.
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
Так майже рівно, про швидкість говорити не потрібно.
В (A==B).all()
поводиться досить багато , як в наступному фрагменті коду:
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()
буде вилітати , якщо А і В мають різну довжину . За станом на 1.10, у такому випадку == викликає попередження про депресію .