Numpy中的矩陣運算

1treeS發表於2019-02-16

安裝與使用

大型矩陣運算主要用matlab或者sage等專業的數學工具,但我這裡要講講python中numpy,用來做一些日常簡單的矩陣運算!這是 numpy官方文件,英文不太熟悉的,還有 numpy中文文件

numpy 同時支援 python3 和 python2,在 python3 下直接pip install安裝即可,python2 的話建議用 .whl 安裝,你可以在 這裡查詢 和你 python2 版本對應的 whl 檔案。如果你使用 python2.7,我這裡有打包好的 安裝檔案

常用函式

import numpy as np

np.array([[1,2,3],[4,5,6]]) # 定義一個二維陣列
np.mat([[1,2,3],[4,5,6]]) # 定義一個兩行三列矩陣
np.mat(list) # 列表或者陣列轉 matrix(矩陣)
np.tolist(matrix) # 與上面相反
np.shape(array) # 求矩陣或者陣列array的維度
array.reshape(m,n) # 陣列或矩陣重塑為m行n列
np.eye(m,n) # 建立m行n列單位矩陣
np.zeros([m,n],dtype) # 建立初始化為0的矩陣
# .transpose()轉置矩陣 .inv()逆矩陣
# .T轉置矩陣,.I逆矩陣

舉個例子

# python3
import numpy as np

# 先建立一個長度為12的列表,,再重塑為4行3列的矩陣
list1 = [0,1,2,3,4,5,6,7,8,9,0,1]
list1_to_mat = np.mat(list1) # 列表先轉成矩陣 
mat1 = list1_to_mat.reshape(4,3) # 重塑
print(mat1)
# 求上面矩陣的轉置矩陣和逆矩陣
mat_transpose = mat1.T
mat_inv = mat1.I
# 再定義一個3行4列的陣列轉成矩陣,和上面矩陣相乘
array1 = np.array([[1,2,3,4],[4,5,6,7],[3,2,1,0]])
mat2 = np.mat(array1)
print(mat2)
print(mat2*mat1) # 或者你可以用 np.dot()以及 np.multiply()

要注意:numpy 的陣列和 python 的列表是有區別的,比如:列表 list 只有一維。然後 numpy 的陣列和矩陣也有區別!比如:矩陣有逆矩陣,陣列是沒有逆的!!

END

相關文章