python向量化與迴圈耗時對比及其原理,向量化計算速度是迴圈的約為300倍。
import time
import numpy as np
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print(c)
print("the result of vectorized version : " , str(1000*(toc-tic)) + "ms")
c = 0
tic1 = time.time()
for i in range(1000000):
c += a[i]*b[i]
toc1 = time.time()
print(c)
print("the result of loop version: " , str(1000*(toc1-tic1)) + "ms")
python是解釋語言,這意味著你的指令進行分析,並在每次執行解釋。由於它們不是靜態型別的,因此迴圈必須在每次迭代**估算子的型別,這導致計算開銷。
向量化可以使一條指令並行地對多個運算元執行相同的操作(simd(單指令,多資料)操作)。例如,要將大小為n的向量乘以標量,讓我們呼叫m可以同時操作的運算元大小。如果是這樣,那麼它需要執行的指令數大約為n / m,如果採用迴圈方式,則必須執行n次操作。
向量化與for迴圈耗時對比 python實現
向量化與for迴圈耗時對比 python實現 深度學習中,可採用向量化替代for迴圈,優化耗時問題 對比例程如下,參考andrew ng的課程筆記 import time import numpy as np a np.random.rand 1000000 b np.random.rand 100...
向量化與正則化
向量化vectorization vectorization是使用矩陣計算來代替for迴圈,以簡化計算過程,提高效率。如上式,是乙個求和的過程,顯然需要乙個for語句迴圈m次,所以根本沒有完全的實現vectorization。下面介紹向量化的過程 約定訓練資料的矩陣形式如下,x的每一行為一條訓練樣本...
Numpy基礎 陣列與向量化計算
一 多維陣列 1 生成ndarray array函式 1 np.array import numpy as np data1 6,7.5,8,0,1 建立簡單的列表 print data1 arr1 np.array data1 將列表轉化為陣列 print arr1 2 ndarry的資料型別 1...