Python 矩陣相關

2021-10-02 13:03:45 字數 2318 閱讀 6222

python 中矩陣運算主要使用numpy庫。numpy的主要物件是同種元素的多維陣列。這是乙個所有的元素都是一種型別、通過乙個正整數索引的元素**(通常是元素是數字)。因此對於隨機查詢來說,比python自帶的list快很多。

在numpy裡面通常使用兩個變數:array和matrix。其實python標準類庫中也有array,但是它的功能相對numpy的少很多,所以不用。matrix是array的分支,matrix可以看做二維的array,array可以是多維,matrix和array在很多時候都是通用的。官方建議如果兩個都可以用,那就選擇array,因為array更靈活,速度更快,很多人把二維的array也翻譯成矩陣。但是matrix的優勢在於,它相對於array使用的符號更簡潔一些。

a = np.array([2,4,5,6,7])

如上建立了乙個1*5的一行5列的array,這就相當於乙個行向量(實際上不是,應該用np.array([[2,4,5,6,7]])建立)。

m = np.matrix([[1,2,4,5,6],[5,6,8,9,4]])

如上建立了乙個2*5的matrix,這就是乙個2*5的矩陣。

另外矩陣還可以通過這個建立:

m = np.mat([[1,2,4,5,6],[5,6,8,9,4]])

mat和matrix的相關之處是,mat()就等同於matrix(,copy=false),而matrix()實際上預設copy=true。

所以如果想引用乙個矩陣,如m,可以使用a = mat(m),或者a = matrix(m,copy=false)。當然用列表來新建立乙個矩陣的時候它們是完全一樣的。

m = m.transpose()

m = m.t

matrix和除一維外的array(甚至高維,儘管不清楚轉置機制,但暫時用不上所以先不研究)可以通過這個兩個進行轉置(t和transpose不同點暫時不研究了)。

但是一維的array,它不是矩陣,也不是向量,所以不能通過transpose來轉置。

因為在計算機裡,二維和一維定義好以後就確定下來用幾個索引標誌來索引了。

而向量從功能上來看,應該被看做1行或1列的矩陣,所以它應該是二維的。就是說我們索引它的某個元素,比如行向量a的第3個元素,我們應該用a[1][3],而不是a[3]。

所以a = np.array([2,4,5,6,7])建立的其實啥也不是,像np.array([[2,4,5,6,7]])這樣建立二維的才算真正意義上的行向量,也就能用transpose()來轉置了。

如果用a = np.array([2,4,5,6,7,1,3,8])建立了一行陣列a,想變成向量,就用reshape()函式來將它變成二維的向量。

a = a.reshape([1,8])

把a轉換為了二維的1行8列的行向量,即使a原來是一維陣列。

a = a.reshape(8)

這樣就又轉回了原來一維的8元素的陣列。   

甚至還可以a = a.reshape([2,2,2])

變成了2*2*2的三維的立方陣。

另外,如果賦值給乙個新變數:

b = a.reshape([2,2,2])

a的shape沒變,b是2*2*2的立方陣,而且它們共享記憶體,即a改變它的元素值,b也會改變。

乘法有三種表達方式:*、dot()、multiply()

陣列或矩陣的對應位置元素相乘。

對於一維陣列array,執行對應位置相乘,然後再求和;對於秩不為1的二維陣列(array)、矩陣(matrix),執行矩陣乘法運算(超過二維的可以參考numpy庫介紹)

對陣列array執行對應位置元素相乘(相當於 np.multiply() 函式),對矩陣matrix執行矩陣乘法運算(相當於 np.dot() 函式)。就是multiply()和dot()的融合。

相當於多個array或matrix執行*,即a**3=a*a*a。

multiply()全都是對應元素相乘;dot()是矩陣乘法,而一維array是對應元素相乘後之和;*對array是對應元素相乘,對matrix是矩陣乘法。

相對來說matrix注重矩陣操作,array注重陣列操作(陣中元素對應進行運算)

Python 矩陣相關

python 中矩陣運算主要使用numpy庫。numpy的主要物件是同種元素的多維陣列。這是乙個所有的元素都是一種型別 通過乙個正整數索引的元素 通常是元素是數字 因此對於隨機查詢來說,比python自帶的list快很多。在numpy裡面通常使用兩個變數 array和matrix。其實python標...

矩陣相關總結

有可逆矩陣p,q,使得 paq b 有可逆矩陣p,使得 pap b 求對角矩陣就是求特徵值和特徵向量 有a,b兩個n階方陣,如有非奇異n階方陣c,使得b c tac a ta e,a t a u hau t或者 a utu h u h在實數域上就是指轉置 lambda a i preceq a pr...

矩陣運算相關問題

hoj1575 1 問題 給定乙個n n的方陣 2 n 10 計算這個矩陣的k次方的跡 2 k 1000000000 模9973 2 要點 無 hoj4920 1 問題 給定兩個n n矩陣 1 n 800 計算這兩個矩陣的乘積,模3 2 要點 將初始矩陣模3之後會有比較多的0元素,有利於提供矩陣的乘...