Python中的向量化


在本文中,我們將學習向量化以及使用 Python 3.x 或更早版本實現的相關技術。

什麼是向量化?

向量化是一種無需使用迴圈即可實現陣列的技術。使用函式可以幫助有效地縮短程式碼的執行時間和執行時間。各種操作都可以在向量而不是陣列上執行,例如向量的點積(也稱為標量積,因為它產生單個輸出)、外積(導致維度等於向量長度(長度 X 長度)的方陣)、逐元素乘法(乘以相同索引的元素,矩陣的維度保持不變)。

點積/內積

讓我們看看實現

示例

import time
import numpy
import array
p = array.array('q')
for i in range(100000,200000):
   p.append(i);
q = array.array('q')
for i in range(200000, 300000):
   q.append(i)
# classic dot product
tic = time.process_time()
dot_value = 0.0;
for i in range(len(a)):
   dot_value += p[i] * q[i]
toc = time.process_time()
print("dot_product of vector arrays = "+ str(dot_value));
print("Computation time taken = " + str(1000*(toc - tic )) + "ms")
n_tic = time.process_time()
n_dot_product = numpy.dot(a, b)
n_toc = time.process_time()
print("\nn_dot_product of vector arrays = "+str(n_dot_product))
print("Computation time taken= "+str(1000*(n_toc - n_tic))+"ms")

輸出

dot_product of vector arrays = 3833313333350000.0
Computation time taken = 116.51723400000068ms
n_dot_product of vector arrays = 3833313333350000
Computation time taken= 2.5412239999997865ms

現在讓我們詳細討論上面使用的函式

outer(a, b) - 此函式將兩個 numpy 陣列作為輸入變數,並返回兩個向量的外積。

multiply(a, b) - 此函式將兩個 numpy 陣列作為輸入變數,並返回兩個陣列的矩陣積。

dot(a, b) - 此函式將兩個 numpy 陣列作為輸入變數,並返回兩個陣列的點積。

zeros((n, m)) - 此函式將形狀和型別作為輸入變數,並返回給定形狀和型別的矩陣,並用零初始化。

process_time() - 此函式返回當前程序的系統和使用者 CPU 時間之和的值(以秒為單位)。它不包括睡眠期間經過的時間

結論

在本文中,我們學習了 Python 中的向量化。

更新於: 2019年8月28日

884 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告