# Numpy #6 矩陣運算 ## 乘積 需注意數學上的矩陣尺寸要正確才能做 ab相乘: np.dot(a,b) 或 a.dot(b) 或 a@b a@b用在多維陣列的話,超過二維的會放到二維後才操作 ab內積: np.inner(a,b) ab外積(張量積): np.outer(a,b) 多維外積可參考此圖 ![](https://i.imgur.com/9dqfjkr.png) ## 其他運算 np.trace(a) 跡(trace),即方陣對角線元素之和 np.linalg.det(a) 方陣行列式 np.linalg.inv(a) 方陣反矩陣 np.transpose(a) 轉置 np.linalg.eig(a) 會有兩個回傳(需指定兩個變數) 分別為特徵值eigenvalue與特徵向量eigenvector np.linalg.rank(a) 秩(rank),即獨立的列數 np.linalg.solv(a,b) 解線性系統,即aX=b的X ## 特殊矩陣 np.identity(n) nXn的單位矩陣 np.eye(a,b) aXb的單位矩陣,不是方陣也可以 可指定k=n 指定欄位索引n開始1 以上兩個可以指定dtype=,預設float ![](https://i.imgur.com/j5FnP6r.png) ![](https://i.imgur.com/9CqGunZ.png) np.tri(a,b) 產生aXb對角線以下都是1的矩陣 可指定k=n 指定哪個欄位索引開始 ![](https://i.imgur.com/q8fHh5K.png) np.triu(a) 將a上三角化 np.tril(a) 將a下三角化(皆不包含對角線) 以上可指定k=n指定開始對角線的欄位索引 np.diag(a) np.diagonal(a) 皆為得到a對角線的元素(以一維陣列表示) 可指定offset=,預設0,若為n則是將此對角線平行往右n格,可負 diagnal可指定哪兩個軸來對角 ## 矩陣分解 np.linalg.cholesky(a) cholesky分解 分解成下三角矩陣L乘以L的共軛轉置 np.linalg.qr(a) QR分解,有兩個回傳,需指定兩個變數 分解成一個正交矩陣Q(每個行列內積都是0)乘以一個上三角矩陣R np.linalg.svd(a) SVD分解,有三個回傳,需指定三個變數 其他矩陣運算參考: https://numpy.org/doc/stable/reference/routines.linalg.html ###### tags: `資料分析` `numpy` `python`