Nếu bạn muốn kiểm tra xem hai mảng có giống nhau shape
VÀ elements
bạn nên sử dụng np.array_equal
vì đó là phương pháp được đề xuất trong tài liệu.
Hiệu suất khôn ngoan không hy vọng rằng bất kỳ kiểm tra bình đẳng sẽ đánh bại người khác, vì không có nhiều chỗ để tối ưu hóa comparing two elements
. Chỉ vì lợi ích, tôi vẫn làm một số xét nghiệm.
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
Vì vậy, khá nhiều bằng nhau, không cần phải nói về tốc độ.
Các (A==B).all()
hành vi khá nhiều như đoạn mã sau:
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()
sẽ sụp đổ nếu A và B có độ dài khác nhau . Kể từ numpy 1.10, == đưa ra cảnh báo khấu hao trong trường hợp này .