|
注:NumPy是Numarray的后繼者,用來代替NumArray。SAGE是基于NumPy和其他幾個(gè)工具所整合成的數(shù)學(xué)軟件包,目標(biāo)是取代Magma, Maple, Mathematica和Matlab 這類工具。 今天我想在網(wǎng)上找一些關(guān)于NumPy的介紹,并試一下用NumPy求逆矩陣的時(shí)候,竟然找不到任何中文的資料,有網(wǎng)友在論壇請教“怎么用Python進(jìn)行矩陣求逆”,也無一人回答。因此我找到NumPy的官方文檔,其中有一小節(jié)內(nèi)容是介紹矩陣對象的,于是我就把這一節(jié)翻譯成中文,作出點(diǎn)微小的貢獻(xiàn),時(shí)間較短,沒怎么檢查拼寫錯(cuò)誤,有問題請?jiān)?。翻譯者:Keengle(http://www.)。 8.2 矩陣(Matrix)對象 Matrix類型繼承于ndarray類型,因此含有ndarray的所有數(shù)據(jù)屬性和方法。Matrix類型與ndarray類型有六個(gè)重要的不同點(diǎn),當(dāng)你當(dāng)Matrix對象當(dāng)arrays操作時(shí),這些不同點(diǎn)會導(dǎo)致非預(yù)期的結(jié)果。 1)Matrix對象可以使用一個(gè)Matlab風(fēng)格的字符串來創(chuàng)建,也就是一個(gè)以空格分隔列,以分號分隔行的字符串。 2)Matrix對象總是二維的。這包含有深遠(yuǎn)的影響,比如m.ravel()的返回值是二維的,成員選擇的返回值也是二維的,因此序列的行為與array會有本質(zhì)的不同。 3)Matrix類型的乘法覆蓋了array的乘法,使用的是矩陣的乘法運(yùn)算。當(dāng)你接收矩陣的返回值的時(shí)候,確保你已經(jīng)理解這些函數(shù)的含義。特別地,事實(shí)上函數(shù)asanyarray(m)會返回一個(gè)matrix,如果m是一個(gè)matrix。 4)Matrix類型的冪運(yùn)算也覆蓋了之前的冪運(yùn)算,使用矩陣的冪。根據(jù)這個(gè)事實(shí),再提醒一下,如果使用一個(gè)矩陣的冪作為參數(shù)調(diào)用asanarray(…)跟上面的相同。 5)矩陣默認(rèn)的array_priority是10.0,因而ndarray和matrix對象混合的運(yùn)算總是返回矩陣。 6)矩陣有幾個(gè)特有的屬性使得計(jì)算更加容易,這些屬性有: (a) .T -- 返回自身的轉(zhuǎn)置 (b) .H -- 返回自身的共軛轉(zhuǎn)置 (c) .I -- 返回自身的逆矩陣 (d) .A -- 返回自身數(shù)據(jù)的2維數(shù)組的一個(gè)視圖(沒有做任何的拷貝) Matrix類是ndarray的一個(gè)Python子類,你也可以學(xué)習(xí)這個(gè)實(shí)現(xiàn)來構(gòu)造自己的ndarray子類。Matrix對象也可以使用其它的Matrix對象,字符串,或者其它的可以轉(zhuǎn)換為一個(gè)ndarray的參數(shù)來構(gòu)造。另外,在NumPy里,“mat”是“matrix”的一個(gè)別名。 例1: 使用字符串構(gòu)造矩陣
[[ 0.29239766 -0.13450292] [-0.13450292 0.08187135]] 例2: 使用嵌套序列構(gòu)造矩陣
matrix([[ 1.+0.j, 5.+0.j, 10.+0.j],
例3: 使用一個(gè)數(shù)組構(gòu)造矩陣
matrix([[ 0.81541602, 0.73987459, 0.03509142],
Matrix( data, dtype=None, copy=True ) 將以參數(shù)data傳進(jìn)來的數(shù)據(jù)轉(zhuǎn)換為矩陣。如果dtype是None,那么數(shù)據(jù)類型將由data的內(nèi)容來決定。如果copy為True,則會拷貝data中的數(shù)據(jù),否則會使用原來的數(shù)據(jù)緩沖。如果沒有找到數(shù)據(jù)的緩沖區(qū),當(dāng)然也會進(jìn)行數(shù)據(jù)的拷貝。注意:矩陣matrix事實(shí)上是一個(gè)類型,因此當(dāng)你構(gòu)造實(shí)例的時(shí)候會調(diào)用matrix.new(matrix, data, dtype, copy)。 Mat 只是matrix的一個(gè)別名。 Asmatrix(data, dtype=None) 返回不經(jīng)過復(fù)制的數(shù)據(jù)。等價(jià)于matrix(data, dtype, copy=False)。 Bmat(obj, ldict=None, gdict=None) 使用一個(gè)字符串,嵌套的序列或者一個(gè)數(shù)組(array)構(gòu)造一個(gè)矩陣。這個(gè)命令允許你從其它的對象來建立起矩陣。其中當(dāng)obj是一個(gè)字符串的時(shí)候才會使用參數(shù)ldict和gdict,這兩個(gè)參數(shù)是局部和模塊的字典。如果你沒有提供它們,這些將由系統(tǒng)提供。
[[2 2 1 1] [2 2 1 1] [1 1 2 2] [1 1 2 2]] 該文章轉(zhuǎn)自http://blog.sina.com.cn/s/blog_5d8dae7c0100zms5.html |
|
|