【線性代數公開課MIT Linear Algebra】 實際應用——python中的線性代數(1)

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/a352611/article/details/49562463

目前已經看完了公開課的三分之一,線性代數中的常見概念也已經差不多全部介紹了一遍,那麼在實際應用中會藉助於計算機來實現,這裏將介紹如何在python中使用我們學到的知識。

NumPy系統是Python的一種開源的數值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結構要高效的多(該結構也可以用來表示矩陣(matrix))。據說NumPy將Python相當於變成一種免費的更強大的MatLab系統。

以上引自百度百科
numpy官網:http://www.numpy.org/

1.如何表示矩陣

矩陣A
147258369

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.matrix('1 2 3;4 5 6; 7 8 9')

2.矩陣乘法

對於ndarray或者matrix來說,其加法或者減法都是直接對每一個元素都進行計算,但是二者的乘法是不同的。
ndarray的乘法是對每一個元素相乘,而matrix的乘法是矩陣乘法

>>> A = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> A*A
array([[ 1,  4,  9],
       [16, 25, 36],
       [49, 64, 81]])
>>> B = np.matrix('1 2 3;4 5 6; 7 8 9')
>>> B
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>> B*B
matrix([[ 30,  36,  42],
        [ 66,  81,  96],
        [102, 126, 150]])

但是實際應用中我們使用ndarray更多一些,那麼使用ndarray時要實現矩陣乘法就需要使用np.dot()函數:

>>> np.dot(A, A)
array([[ 30,  36,  42],
       [ 66,  81,  96],
       [102, 126, 150]])

3.矩陣的秩

np.rank()函數返回的不是矩陣的秩,而是dimension 維數!!!
np.rank()函數返回的不是矩陣的秩,而是dimension 維數!!!
np.rank()函數返回的不是矩陣的秩,而是dimension 維數!!!
要獲得矩陣的rank要使用np.linalg.matrix_rank()函數:

>>> np.rank(np.array([[[1], [2], [3]]]))
3
>>> np.rank(np.array([[[[1], [2], [3]]]]))
4
>>> A = np.array([[1,2,3],[4,5,6],[10,8,9]])
>>> A
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [10,  8,  9]])
>>> np.rank(A)
2
>>> np.linalg.matrix_rank(A)
3

4.矩陣的轉置

轉置transpose:

>>> B
matrix([[ 1,  2,  3],
        [ 4,  5,  6],
        [10,  8,  9]])
>>> B.T
matrix([[ 1,  4, 10],
        [ 2,  5,  8],
        [ 3,  6,  9]])
>>> B.transpose()
matrix([[ 1,  4, 10],
        [ 2,  5,  8],
        [ 3,  6,  9]])

5.矩陣的逆

逆inverse:

>>> np.linalg.inv(A)
array([[ 2., -1.],
       [-1.,  1.]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章