天天看點

Python清單、Numpy數組與矩陣的差別

參考部落格:http://blog.sina.com.cn/s/blog_d8f6ec6b0102wtbh.html、http://blog.sina.com.cn/s/blog_c4520abd0102x7v4.html

Python清單和Numpy數組的差別:

Numpy使用ndarray對象來處理多元數組,該對象是一個快速而靈活的大資料容器。使用Python清單可以存儲一維數組,通過清單的嵌套可以實作多元數組,那麼為什麼還需要使用Numpy呢?Numpy是專門針對數組的操作和運算進行了設計,是以數組的存儲效率和輸入輸出性能遠優于Python中的嵌套清單,數組越大,Numpy的優勢就越明顯。通常Numpy數組中的所有元素的類型都是相同的,而Python清單中的元素類型是任意的,是以在通用性能方面Numpy數組不及Python清單,但在科學計算中,可以省掉很多循環語句,代碼使用方面比Python清單簡單的多。

Numpy數組和矩陣的差別:

1. Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多元的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含于Array。是以matrix 擁有array的所有特性。

2. 在numpy中matrix的主要優勢是:相對簡單的乘法運算符号。例如,a和b是兩個matrices,那麼a*b,就是矩陣積。

3. matrix 和 array 都可以通過objects後面加.T 得到其轉置。但是 matrix objects 還可以在後面加 .H f得到共轭矩陣, 加 .I 得到逆矩陣。

4. 相反的是在numpy裡面arrays遵從逐個元素的運算,是以array:c 和d的c*d運算相當于matlab裡面的c.*d運算。而矩陣相乘,則需要numpy裡面的dot指令 。

例如:

Python清單、Numpy數組與矩陣的差別
Python清單、Numpy數組與矩陣的差別
  1. ** 運算符的作用也不一樣 :因為a是個matrix,是以a**2傳回的是a*a,相當于矩陣相乘。而c是array,c**2相當于,c中的元素逐個求平方。
    Python清單、Numpy數組與矩陣的差別
  2. 問題就出來了,如果一個程式裡面既有matrix 又有array,會讓人腦袋大。但是如果隻用array,你不僅可以實作matrix所有的功能,還減少了程式設計和閱讀的麻煩。
  3. 當然你可以通過下面的兩條指令輕松的實作兩者之間的轉換:np.asmatrix和np.asarray
  4. numpy 中的array與numpy中的matrix的最大的不同是,在做歸約運算時,array的維數會發生變化,但matrix總是保持為2維。例如下面求平均值的運算.
    Python清單、Numpy數組與矩陣的差別
    Python清單、Numpy數組與矩陣的差別