前言
Numpy是一個非常強大的python科學計算庫,爲了機器學習的需要,想深入研究一下Numpy庫的用法,用這個系列的博客,記錄下我的學習過程。
系列:
Numpy庫進階教程(二)
正在持續更新
計算逆矩陣
numpy.linalg模塊包含線性代數的函數,可以用來求矩陣的逆,求解線性方程組、求特徵值及求解行列式。
mat函數可以用來構造一個矩陣,傳進去一個專用字符串,矩陣的行與行之間用分號隔開,行內的元素用空格隔開。
import numpy as np
A = np.mat("0 1 2;1 0 3;4 -3 8")
print "A\n", A
現在我們使用inv函數計算逆矩陣
inverse = np.linalg.inv(A)
print "inverse of A\n", inverse
我們檢查一下兩矩陣相乘的結果
print "Check\n", A * inverse
需要說明的是這裏的 A * inverse是兩個矩陣中對應元素逐個相乘,這就要求了兩矩陣的行和列相等。
求解線性方程組
創建矩陣A和數組b:
A = np.mat("1 -2 1;0 2 -8;-4 5 9")
print "A\n", A
b = np.array([0, 8, -9])
print "b\n", b
這裏可以直接調用linalg中的solve函數求解
x = np.linalg.solve(A, b)
print "Solution", x
使用dot函數檢查解的正確性:
print "Check\n", np.dot(A , x)
這裏的dot函數是兩個矩陣相乘,而非矩陣內元素逐個相乘