【每天幾分鐘,從零入門python編程的世界!】
上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!我們現在入門階段知道有這個概念就行,能解決實際問題就行,後面遇到了問題再去深入。現在我們是為了入門,入門之後,你可以根據自身的底子去選擇發展方向。
閒話少敘,我們對numpy中的矩陣相乘做一些舉例說明。
我們還是使用上節的兩個矩陣為例。
上節我們用手寫推導矩陣相乘過程如下:
我們現在用代碼演示一下numpy中的矩陣相乘。我們知道如果兩個數組都是2維以上才能用矩陣相乘。
用代碼生成兩個2行2列的數組x和y(跟我們手寫推導時的矩陣x和y結構一樣,都是2行2列),然後進行矩陣相乘。
運行結果:
由上面代碼我們看到,運算結果和我們手寫推導出來的結果一模一樣。
另外numpy.dot有2種寫法:
①x.dot(y)
②np.dot(x,y)
我們知道兩個數組都是1維數組時的numpy.dot的,是計算空間向量的內積。現在我們計算兩個一維數組i和j的乘積。
假設i和j這兩個1維數組如下:
i = [3 0],j = [0 4]
把i和j看做空間向量,相當於i的坐標為(3,0),j的坐標為(0,4)。
如下圖:
我們根據上圖可知,i和y是垂直的,即夾角是90度,所以cos90°的值是0,所以i.j的內積就是0。
那麼我們在numpy中用代碼計算i和j的點乘,看看結果是不是0。
運算結果:
我們看到通過numpy的代碼運算結果,和我們用空間向量計算內積的結果是一致的。
大家可以自己在Python中輸入以上代碼試試。
總結:
學到這裡,我們就把numpy中數組的相乘主要分為兩種:
①通過*和np.multiply()直接相乘,也就是對位相乘。
②點乘,我們把np.dot方法進行相乘叫做點乘。
np.dot方法,如果兩個同時都是1維的數組相乘,運算過程相當於在空間意義上計算向量的內積;如果兩個同時都是2維以上的數組相乘,運算過程相當於兩個矩陣進行相乘。
我是時問新,歡迎關注我。跟我一起從零開始學習Python,每天花一點時間,開啟python編程新世界的大門,領略新的風光,讓人生多一種可能!