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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告