numpy中list array matrix比較

用python中的numpy包的時候不當心踩了array和matrix的大坑,又引伸一下比較list array matrix之間的異同。
數據結構(Data Structures)基本上人如其名——它們只是一種結構,可以將一些數據聚合在一塊兒。換句話說,它們是用來存儲一系列相關數據的集合。Python 中有四種內置的數據結構——列表(List)、元組(Tuple)、字典(Dictionary)和集合(Set)。python

一、list

list能夠明顯和array、matrix區分,list經過[ ]申明,支持append extend等方法,沒有shape方法。 
使用以下: 
data=[] 
data.append([1,2]) 
data.extend(2) 
list形如:[[1,2,3],[4,5,6],[7,8,9]] 、 [1,2,3,4,5]等數據結構

2 array matrix

list變成array: np.array(list) 
list變爲matrxi:np.mat(list) 
array和matrix相互轉換: np.asmatrix np.asarray 
array變換爲list: data.toList() 
這兩兄弟都有shape屬性,可是他倆的區別是啥呢。 
matrix是array的子集,matrix只能是2維的,array能夠是n維的。 
2維就是matrix的shape只有行、列屬性,就相似線性代數中的矩陣; 
好比說3維的array如同: 
3維的arrayapp

下面就來比較array好matrix計算區別: 
乘法符號 *:array的乘法符號就是對應元素相乘,好比: 
這裏寫圖片描述 
若是行列數不匹配會自動補全,就是numpy的「廣播」功能。具體怎麼補全本身動手試,講了也記不住。 
matrix的 * 符號就是:矩陣乘法:線性代數中的乘法,好比五行三列*三行兩列就會獲得五行兩列: 
這裏寫圖片描述 
matrix想要獲得矩陣*這種效果(就是矩陣相同位置的數字進行相乘):使用np.multiply(mat1,mat2) 
array想要進行矩陣乘法使用:np.dot(array1,array2) 
因此martirx和array中 **符號獲得的結果也是不同的。spa

版權聲明:本文爲博主原創文章,轉載註明出處便可。 https://blog.csdn.net/u011730199/article/details/78202016.net

相關文章
相關標籤/搜索