向量化

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向量化相关的知识,希望对你有一定的参考价值。

向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量
向量化你的代码,会让程序运行得更快
我们用向量化运算来代替显式的for循环
看一个例子:

import numpy as np
import time

a = np.array([1, 2, 3, 4])
print(a)

a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a, b)
toc = time.time()
print(c)
print("Vectorized version:" + str(1000*(toc-tic)) + "ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()
print(c)
print("For loop:" + str(1000*(toc-tic)) + "ms")

在这里插入图片描述

np.random.rand()函数的语法:
np.random.rand(d0,d1,d2……dn)
1)当函数括号内没有参数时,则返回一个浮点数;
2)当函数括号内有一个参数时,则返回秩为1的数组
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
4)np.random.standard_normal()函数与np.random.rand()类似,但是np.random.standard_normal()的输入参数为元组(tuple)
5)np.random.rand()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数

dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法。

以上是关于向量化的主要内容,如果未能解决你的问题,请参考以下文章

除了 gcc 还都有哪些编译器可以向量化代码?

向量化代码并从 pytorch 代码中删除嵌套循环

向量化

PG 向量化引擎--1

如何使用向量化代码从 MATLAB 中的两个向量生成所有对?

如何矢量化这个 python 代码?