【发布时间】:2020-07-31 00:36:45
【问题描述】:
我正在观看Vectorization 的视频,作者解释矢量化将减少计算时间。例如
代码:
import numpy as np
import time
a= np.random.rand(100000)
b= np.random.rand(100000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print(c)
print("Vectorization Version: "+ str(100000 * (toc - tic)) +"ms" )
c = 0
tic = time.time()
for i in range(100000):
c += a[i] * b[i]
toc = time.time()
print(c)
print("NonVectorization Version: "+ str(100000 * (toc - tic)) +"ms" )
输出:
25108.8250776
Vectorization Version: 12.660026550292969ms
25108.8250776
NonVectorization Version: 7782.268524169922ms
矢量化如何有助于减少计算时间?
【问题讨论】:
-
numpy上下文中的“向量化”表示“使用已编译的 numpy 方法和函数”。在此示例中,np.dot在快速编译的 BLAS 库中完成这项工作。慢版本在python代码中迭代,这要慢得多(解释)。
标签: python numpy vectorization