는 이제 사용하여 성능을 측정하자 다음 코드 조각.
import numpy as np
import time
exec_time0 = []
exec_time1 = []
exec_time2 = []
sizeOfArray = 5000
numOfIterations = 200
for i in xrange(numOfIterations):
A = np.random.randint(0,255,(sizeOfArray,sizeOfArray))
B = np.random.randint(0,255,(sizeOfArray,sizeOfArray))
a = time.clock()
res = (A==B).all()
b = time.clock()
exec_time0.append(b - a)
a = time.clock()
res = np.array_equal(A,B)
b = time.clock()
exec_time1.append(b - a)
a = time.clock()
res = np.array_equiv(A,B)
b = time.clock()
exec_time2.append(b - a)
print 'Method: (A==B).all(), ', np.mean(exec_time0)
print 'Method: np.array_equal(A,B),', np.mean(exec_time1)
print 'Method: np.array_equiv(A,B),', np.mean(exec_time2)
출력
Method: (A==B).all(), 0.03031857
Method: np.array_equal(A,B), 0.030025185
Method: np.array_equiv(A,B), 0.030141515
위 결과에 의하면, NumPy와 방법은 빠른 == 연산자의 조합과 전체() 방법보다과 의한 것으로 보인다 numpy 메소드를 비교하는 것 가장 빠른 하나는 numpy.array_equal 메소드 인 것 같습니다.
당신은 거의 항상'np.array_equal' IME를 원하는 :
(A==B).all()
다음과 같은 코드로 거의 작동합니다. '(A == B) .all()'A와 B의 길이가 다른 경우 ** 충돌합니다 **. 1.10 기준으로,이 경우에는 [=== 지원 중단 경고가 나타납니다.] (https://github.com/numpy/numpy/commit/6bf0e419dc79ea6815557c57b7e9bb504ba20543). –당신은 좋은 지적을 가지고 있지만 IME 나는 보통 손 전에 A와 B의 모양을 알고 있습니다. 나는 그것이 상황에 따라 다르며, 나는 추측한다. –