1. 程式人生 > >python中的向量化和for

python中的向量化和for

import numpy as np
import time     #引入庫

a = np.random.rand(1000000)
b = np.random.rand(1000000)       #隨機陣列

tic = time.time()
c= np.dot(a, b)        #矩陣乘法
toc = time.time()
print(c)
print("ver use time"+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("loop use time"+str(1000*(toc-tic))+"ms")     #for迴圈用時

在這裡插入圖片描述 結果可以看出向量化比for迴圈快上許多。。。。

下面說一下*和dot的區別

import numpy as np

a=np.array([[1,2],[0,1]])
b=np.array([[0,1],[2,1]])
c=a*b
print(c)
c=np.dot(a,b)
print(c)

在這裡插入圖片描述 由結果可以看出*是矩陣對應元素相乘,而dot是矩陣的乘法。