機器學習筆記--python使用numpy簡單處理矩陣(二)

目錄

矩陣乘法

單位矩陣

Python實現矩陣的乘法


矩陣乘法

使用前提:m\times l的矩陣乘以n\times m的矩陣得到n\times l的矩陣。

假設 \mathbf{A}_{m \times l} 矩陣中的每一項元素爲\begin{pmatrix} a_{1,1},a_{1,2},a_{1,3}, ... ,a_{1,l}\\ a_{2,1},a_{2,2},a_{2,3},...,a_{2,l} \\ ...\\ a_{m,1},a_{m,2},a_{m,3},...,a_{m,l}\\ \end{pmatrix}

假設 \mathbf{B}_{n\times m} 矩陣中的每一項元素爲\begin{pmatrix} b_{1,1},b_{1,2},b_{1,3},...,b_{1,m}\\ b_{2,1},b_{2,2},b_{2,3},...,b_{2,m}\\ ...\\ b_{n,1},b_{n,2},b_{n,3},...,b_{n,m} \end{pmatrix}

那麼 \mathbf{A}\mathbf{B} 的計算方法爲\begin{pmatrix} a_{1,1}\cdot b_{1,1}+a_{1,2}\cdot b_{2,1}+...+ a_{1,l}\cdot b_{n,1},\quad a_{1,1}\cdot b_{1,2}+a_{1,2}\cdot b_{2,2}+...+ a_{1,l}\cdot b_{n,2},\quad ..., \quad a_{1,1}\cdot b_{1,m}+a_{1,2}\cdot b_{2,m}+...+ a_{1,l}\cdot b_{n,m}\\ a_{2,1}\cdot b_{1,1}+a_{2,2}\cdot b_{2,1}+...+ a_{2,l}\cdot b_{n,1},\quad a_{2,1}\cdot b_{1,2}+a_{2,2}\cdot b_{2,2}+...+ a_{2,l}\cdot b_{n,2},\quad ..., \quad a_{2,1}\cdot b_{1,m}+a_{2,2}\cdot b_{2,m}+...+ a_{2,l}\cdot b_{n,m}\\ ...\qquad ... \qquad ...\\ a_{m,1}\cdot b_{1,1}+a_{m,2}\cdot b_{2,1}+...+ a_{m,l}\cdot b_{n,1},\quad a_{m,1}\cdot b_{1,2}+a_{m,2}\cdot b_{2,2}+...+ a_{m,l}\cdot b_{n,2},\quad ..., \quad a_{m,1}\cdot b_{1,m}+a_{m,2}\cdot b_{2,m}+...+ a_{m,l}\cdot b_{n,m}\\ \end{pmatrix}

舉個例子:

\mathbf{A}=\begin{pmatrix} 1\quad 2\quad 3\quad 4\\ 2\quad 0\quad 5\quad 7\\ 3\quad 6\quad 0\quad 0 \end{pmatrix}    \mathbf{B}=\begin{pmatrix} 2\quad 3\\ 0\quad 1\\ 4\quad 5\\ 6\quad 2 \end{pmatrix}

則有:

\mathbf{A B} = \begin{pmatrix} 1\times 2+2 \times 0 + 3 \times 4 + 4\times6=38 \quad 1\times3+2\times1+3\times5+4\times2=28\\ 2\times2+0\times0+5\times4+7\times6=66\quad 2\times3+0\times1+5\times5+7\times2=45\\ 3\times2+6\times0+0\times4+0\times6=6\quad 3\times3+6\times1+0\times5+0\times2=15 \end{pmatrix}

矩陣的乘法不總是可以交換的,但是向量的點積是可交換的

單位矩陣

定義:單位矩陣對角線上的元素都爲1,其餘都是零。矩陣B乘以單位矩陣得到B矩陣。

以下所示是一個四階單位矩陣

 \mathbf{E}=\begin{pmatrix} 1 \quad 0\quad 0\quad 0\\ 0\quad 1\quad 0\quad 0\\ 0\quad 0\quad 1\quad 0\\ 0\quad 0\quad 0\quad 1 \end{pmatrix}

Python實現矩陣的乘法

上一篇筆記記錄瞭如何用python的numpy創建矩陣,忘記的請戳使用python的numpy進行簡單的矩陣處理,這裏將介紹如何使用numpy進行矩陣的相乘

Cosette:~ cosetteqi$ python
Python 2.7.10 (default, Aug 17 2018, 17:41:52)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> A=np.array([[1,2,3,4],[2,0,5,7],[3,6,0,0]])
>>> print A
[[1 2 3 4]
 [2 0 5 7]
 [3 6 0 0]]
>>> B=np.array([[2,3],[0,1],[4,5],[6,2]])
>>> print B
[[2 3]
 [0 1]
 [4 5]
 [6 2]]
>>> C=A.dot(B)
>>> print C
[[38 28]
 [66 45]
 [ 6 15]]
>>>

如上所示,先創建了矩陣A和矩陣B,要計算他們的乘積直接調用  .dot() 方法即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章