矩陣的定義、矩陣的加法、矩陣的數乘、矩陣的轉置與二維陣列完全一致,但矩陣的乘法有不同的表示。numpy.dot(a, b[, out])計算兩個矩陣的乘積,如果是一維陣列則是它們的內積。
import numpy as np
x = np.array([1
,2,3
,4,5
])y = np.array([2
,3,4
,5,6
])z = np.dot(x, y)
print
(z)# 70
x = np.array([[
1,2,
3],[
3,4,
5],[
6,7,
8]])
print
(x)# [[1 2 3]
# [3 4 5]
# [6 7 8]]
y = np.array([[
5,4,
2],[
1,7,
9],[
0,4,
5]])
print
(y)# [[5 4 2]
# [1 7 9]
# [0 4 5]]
z = np.dot(x, y)
print
(z)# [[ 7 30 35]
# [ 19 60 67]
# [ 37 105 115]]
z = np.dot(y, x)
print
(z)# [[ 29 40 51]
# [ 76 93 110]
# [ 42 51 60]]
numpy.linalg.eig(a)計算方陣的特徵值和特徵向量。
numpy.linalg.ei**als(a)計算方陣的特徵值。
【例1】求方陣的特徵值特徵向量
import numpy as np
# 建立乙個對角矩陣!
x = np.diag((1
,2,3
))print
(x)# [[1 0 0]
# [0 2 0]
# [0 0 3]]
print
(np.linalg.ei**als(x)
)# [1. 2. 3.]
a, b = np.linalg.eig(x)
# 特徵值儲存在a中,特徵向量儲存在b中
print
(a)# [1. 2. 3.]
print
(b)# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
# 檢驗特徵值與特徵向量是否正確
for i in
range(3
):if np.allclose(a[i]
* b[
:, i]
, np.dot(x, b[
:, i]))
:print
('right'
)else
:print
('error'
)# right
# right
# right
【例2】判斷對稱陣是否為正定陣(特徵值是否全部為正)。
import numpy as np
a = np.arange(16)
.reshape(4,
4)print
(a)# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
a = a + a.t # 將方陣轉換成對稱陣
print
(a)# [[ 0 5 10 15]
# [ 5 10 15 20]
# [10 15 20 25]
# [15 20 25 30]]
b = np.linalg.ei**als(a)
# 求a的特徵值
print
(b)# [ 6.74165739e+01 ‐7.41657387e+00 1.82694656e‐15 ‐1.72637110e‐15]
# 判斷是不是所有的特徵值都大於0,用到了all函式,顯然對稱陣a不是正定的
if np.
all(b >0)
:print
('yes'
)else
:print
('no'
)# no
矩陣分解部分本文科生已經看不懂了…跳過不記錄了… MIT 線性代數筆記 09
mit 公開課 gilbert strang 線性代數 課程筆記 彙總 lecture 9 independence,basis,and dimension 課程 9 線性無關性 基 維數 線性無關 向量生成的空間 基 那麼稱 v1 v2,vd 是 v的一組基。線性空間 v的任何一組基中所含向量的個...
Python程式設計基礎Task09
在函式內,或者 在引號內編寫文件。引數註解 defaccumlate x int y int return x y 返回值註解 defaccumlate x int y int int return x y 在閉包中要使用nonlocal關鍵字對需要更改的變數進行宣告 首元素從小到大排序 a 6,5...
線性代數 線性代數的本質
線性代數在機器學習的領域中扮演者十分重要的角色,所以這裡岔開先整理一些線性代數的基本概念和計算方法。這裡是3blue1brown的線性代數課程的截圖和筆記。作為快速複習的網路筆記。本課程的特點 通過影象展現線性代數計算在幾何圖形上意義。這樣能更好的理解線性代數為什麼叫做線性代數。線性代數為什麼採用這...