python向量化與迴圈耗時對比及其原理

2021-10-03 19:51:49 字數 774 閱讀 3754

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...