問題
你需要執(zhí)行矩陣和線性代數(shù)運算,比如矩陣乘法、尋找行列式、求解線性方程組等等。
解決方案
NumPy
庫有一個矩陣對象可以用來解決這個問題。
矩陣類似于3.9小節(jié)中數(shù)組對象,但是遵循線性代數(shù)的計算規(guī)則。下面的一個例子展示了矩陣的一些基本特性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
>>> import numpy as np >>> m = np.matrix([[ 1 , - 2 , 3 ],[ 0 , 4 , 5 ],[ 7 , 8 , - 9 ]]) >>> m matrix([[ 1 , - 2 , 3 ], [ 0 , 4 , 5 ], [ 7 , 8 , - 9 ]]) >>> # Return transpose >>> m.T matrix([[ 1 , 0 , 7 ], [ - 2 , 4 , 8 ], [ 3 , 5 , - 9 ]]) >>> # Return inverse >>> m.I matrix([[ 0.33043478 , - 0.02608696 , 0.09565217 ], [ - 0.15217391 , 0.13043478 , 0.02173913 ], [ 0.12173913 , 0.09565217 , - 0.0173913 ]]) >>> # Create a vector and multiply >>> v = np.matrix([[ 2 ],[ 3 ],[ 4 ]]) >>> v matrix([[ 2 ], [ 3 ], [ 4 ]]) >>> m * v matrix([[ 8 ], [ 32 ], [ 2 ]]) >>> |
可以在 numpy.linalg
子包中找到更多的操作函數(shù),比如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
>>> import numpy.linalg >>> # Determinant >>> numpy.linalg.det(m) - 229.99999999999983 >>> # Eigenvalues >>> numpy.linalg.eigvals(m) array([ - 13.11474312 , 2.75956154 , 6.35518158 ]) >>> # Solve for x in mx = v >>> x = numpy.linalg.solve(m, v) >>> x matrix([[ 0.96521739 ], [ 0.17391304 ], [ 0.46086957 ]]) >>> m * x matrix([[ 2. ], [ 3. ], [ 4. ]]) >>> v matrix([[ 2 ], [ 3 ], [ 4 ]]) >>> |
討論
很顯然線性代數(shù)是個非常大的主題,已經(jīng)超出了本書能討論的范圍。 但是,如果你需要操作數(shù)組和向量的話, NumPy 是一個不錯的入口點。 可以訪問 NumPy 官網(wǎng) http://www.numpy.org 獲取更多信息。
以上就是Python 執(zhí)行矩陣與線性代數(shù)運算的詳細內(nèi)容,更多關(guān)于Python 矩陣與線性代數(shù)運算的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c03/p10_matrix_and_linear_algebra_calculation.html