RGW*_*ton 6 python random numpy python-2.7
我注意到,尝试加速涉及通过向量化python for
循环来生成大量随机数的numpy代码可能会产生相反的结果并且可能会降低它的速度.以下代码的输出是:took time 0.588
和took time 0.789
.这违背了我对如何最好地编写numpy代码的直觉,我想知道为什么会出现这种情况?
import time
import numpy as np
N = 50000
M = 1000
repeats = 10
start = time.time()
for i in range(repeats):
for j in range(M):
r = np.random.randint(0,N,size=N)
print 'took time ',(time.time()-start)/repeats
start = time.time()
for i in range(repeats):
r = np.random.randint(0,N,size=(N,M))
print 'took time ',(time.time()-start)/repeats
Run Code Online (Sandbox Code Playgroud)
在我看来,你的比较不太公平——测量从一维数组列表中构建二维数组的时间怎么样?
\n\nIn [127]: %timeit np.random.randint(0,N,size=(N,M))\n1.32 s \xc2\xb1 24.4 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n\nIn [128]: %timeit np.column_stack(np.random.randint(0,N,size=N) for _ in range(M))\n2.73 s \xc2\xb1 135 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
256 次 |
最近记录: |