python矩陣運算 不斷收集整理

來源:互聯網
上載者:User

標籤:

python矩陣運算轉自:http://blog.sina.com.cn/s/blog_5f234d4701012p64.htmlPython使用NumPy包完成了對N-維數組的快速便捷操作。使用這個包,需要匯入numpy。SciPy包以NumPy包為基礎,大大的擴充了numpy的能力。為了使用的方便,scipy包在最外層名字空間中包括了所有的numpy內容,因此只要匯入了scipy,不必在單獨匯入numpy了!但是為了明確哪些是numpy中實現的,哪些是scipy中實現的,本文還是進行了區分。以下預設已經:import
numpy as np 以及 import scipy as sp 下面簡要介紹Python和MATLAB處理數學問題的幾個不同點。1.MATLAB的基本是矩陣,而numpy的基本類型是多為數組,把matrix看做是array的子類。2.MATLAB的索引從1開始,而numpy從0開始。  1.建立矩陣a1=np.array([1,2,3],dtype=int)  
#建立一個一維數組,資料類型是int。也可以不指定資料類型,使用預設。幾乎所有的數組建立函數都可以指定資料類型,即dtype的取值。a2=np.array([[1,2,3],[2,3,4]])  
#建立一個二維數組。此處和MATLAB的二維數組(矩陣)的建立有很大差別。同樣,numpy中也有很多內建的特殊矩陣:b1=np.zeros((2,3))  
 #產生一個2行3列的全0矩陣。注意,參數是一個tuple:(2,3),所以有兩個括弧。完整的形式為:zeros(shape,dtype=)。相同的結構,有ones()建立全1矩陣。empty()建立一個空矩陣,使用記憶體中的隨機值來填充這個矩陣。b2=identity(n)   #建立n*n的單位陣,這隻能是一個方陣。b3=eye(N,M=None,k=0)  
 #建立一個對角線是1其餘值為0的矩陣,用k指定對角線的位置。M預設None。此外,numpy中還提供了幾個like函數,即按照某一個已知的數組的規模(幾行幾列)建立同樣規模的特殊數組。這樣的函數有zeros_like()、empty_like()、ones_like(),它們的參數均為如此形式:zeros_like(a,dtype=),其中,a是一個已知的數組。c1=np.arange(2,3,0.1)  
#起點,終點,步長值。含起點值,不含終點值。c2=np.linspace(1,4,10)  
 #起點,終點,區間內點數。起點終點均包括在內。同理,有logspace()函數d1=np.linalg.companion(a)  
 #伴隨矩陣d2=np.linalg.triu()/tril()  
#作用同MATLAB中的同名函數e1=np.random.rand(3,2)  
 #產生一個3行2列的隨機數組。同一空間下,有randn()/randint()等多個隨機函數fliplr()/flipud()/rot90()  
 #功能類似MATLAB同名函數。xx=np.roll(x,2)  
#roll()是迴圈移位函數。此調用表示向右迴圈移動2位。  2.數組的特徵資訊先假設已經存在一個N維數組X了,那麼可以得到X的一些屬性,這些屬性可以在輸入X和一個.之後,按tab鍵查看提示。這裡明顯看到了Python物件導向的特徵。X.flags    #數組的儲存情況資訊。X.shape  
 #結果是一個tuple,返回本數組的行數、列數、……X.ndim   #數組的維數,結果是一個數X.size    #數組中元素的數量X.itemsize  
 #數組中的資料項目的所佔記憶體空間大小X.dtype    #資料類型X.T   #如果X是矩陣,發揮的是X的轉置矩陣X.trace()    #計算X的跡np.linalg.det(a)   #返回的是矩陣a的行列式np.linalg.norm(a,ord=None)  
 #計算矩陣a的範數np.linalg.eig(a)  
 #矩陣a的特徵值和特徵向量np.linalg.cond(a,p=None)  
 #矩陣a的條件數np.linalg.inv(a)  
 #矩陣a的逆矩陣  3.矩陣分解常見的矩陣分解函數,numpy.linalg均已經提供。比如cholesky()/qr()/svd()/lu()/schur()等。某些演算法為了方便計算或者針對不同的特殊情況,還給出了多種調用形式,以便得到最佳結果。  4.矩陣運算np.dot(a,b)用來計算數組的點積;vdot(a,b)專門計算向量的點積,和dot()的區別在於對complex資料類型的處理不一樣;innner(a,b)用來計算內積;outer(a,b)計算外積。專門處理矩陣的數學函數在numpy的子包linalg中定義。比如np.linalg.logm(A)計算矩陣A的對數。可見,這個處理和MATLAB是類似的,使用一個m尾碼表示是矩陣的運算。在這個空間內可以使用的有cosm()/sinm()/signm()/sqrtm()等。其中常規exp()對應有三種矩陣形式:expm()使用Pade近似演算法、expm2()使用特徵值分析演算法、expm3()使用泰勒級數演算法。在numpy中,也有一個計算矩陣的函數:funm(A,func)。  5.索引numpy中的數組索引形式和Python是一致的。如:x=np.arange(10)print x[2]  
 #單個元素,從前往後正向索引。注意下標是從0開始的。print x[-2]  
 #從後往前索引。最後一個元素的下標是-1print x[2:5]  
 #多個元素,左閉右開,預設步長值是1print x[:-7]  
 #多個元素,從後向前,制定了結束的位置,使用預設步長值print x[1:7:2]   #指定步長值x.shape=(2,5)  
 #x的shape屬性被重新賦值,要求就是元素個數不變。2*5=10print x[1,3]  
 #二維數組索引單個元素,第2行第4列的那個元素print x[0]   #第一行所有的元素y=np.arange(35).reshape(5,7)  
 #reshape()函數用於改變數組的維度print y[1:5:2,::2]  
 #選擇二維數組中的某些合格元素

python矩陣運算 不斷收集整理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.