Если вы хотите проверить, имеют ли два массива одинаковые 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
person
user1767754
schedule
11.01.2018