ถ้าคุณต้องการตรวจสอบว่าสองอาร์เรย์มีเหมือนกัน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()
จะผิดพลาดถ้า A และ B มีความยาวแตกต่างกัน ณ วันที่ 1.10, == เพิ่มคำเตือนการเลิกใช้ในกรณีนี้