파이썬의 itertools
모듈을 사용하여 트리플 중첩 루프의 속도를 높이려고합니다.Python itertools - 천천히?
중첩 루프 시간 = 2.35023 초
Itertools 루프 시간 = 2.67766 초
내가 뭔가를 놓치고 있습니까 : 아래의 테스트 코드는 itertools '제품 방법과 출력을 표준 트리플 중첩 루프를 비교?
import numpy
import itertools
import time
n = 128
a = numpy.arange(n**3).reshape((n,n,n))
b = numpy.zeros((n,n,n))
c = numpy.zeros((n,n,n))
t = time.time()
for i in range(n):
for j in range(n):
for k in range(n):
b[i,j,k] = a[i,j,k]
print 'Nested loop time = %g secs' % (time.time() - t)
t = time.time()
for (i,j,k) in itertools.product(range(n), repeat=3):
c[i,j,k] = a[i,j,k]
print 'Itertools loop time = %g secs' % (time.time() - t)
그것은
itertools.product
처럼 보인다
"누락 된 것이 있습니까?" - 당신이 놓치고있는 것 중 하나는 'itertools.product()'가 루프를 위해 중첩 된 속도라고하는 사람이 없다는 것입니다. –
@Sven Marnach 9.7. itertools - 효율적인 루핑을위한 반복자를 만드는 함수 ... http : //docs.python.org/library/itertools.html –