python的列表,數組和矩陣

理論

python列表與numpy數組的區別

使用Python列表可以存儲一維數組,通過列表的嵌套可以實現多維數組。而numpy使用ndarray對象來處理多維數組,該對象是一個快速而靈活的大數據容器,存儲效率和輸入輸出性能遠優於Python中的嵌套列表。通常Numpy數組中的所有元素的類型都是相同的,而Python列表中的元素類型是任意的,因此在通用性能方面Numpy數組不及Python列表,但在科學計算中使用方面要比Python列表簡單的多。

Numpy數組和矩陣的區別

  1. 矩陣必須是二維的,而數組可以是一維到任意維。
  2. 矩陣的主要優勢是:相對簡單的乘法運算符號
  3. 矩陣和數組都可以通過objects後面加.T得到其轉置。但是矩陣還可以在後面加 .H得到共軛矩陣, 加.I得到逆矩陣
  4. 相反的是在numpy裏面數組遵從逐個元素的運算,所以對於數組c 和d的c*d運算相當於matlab裏面的c.*d運算。而矩陣相乘,則需要numpy裏面的dot

示例

一維數組的輸出

如下,對於一維數組的輸出都是不同的

m_list=[1,2] # 結果爲[1,2]
m_arr=np.array(m_list) # [1 2]
m_mat=np.mat(m_list) # [[1 2]],因爲矩陣必須二維

二維數組的輸出

m_list=[[1,2],[3,4]]
m_arr=np.array(m_list)
m_mat=np.mat(m_list)

結果爲:

[[1, 2], [3, 4]]

[[1 2]
 [3 4]]
 
[[1 2]
 [3 4]]

其中數組和矩陣的數組在形式上是相同的,但是數組的維度會發生變化。

數組的維度會發生變化

做歸約運算時,數組的維度會發生變化,比如平均運算:

m_list=[[1,2],[3,4]]
m_arr=np.array(m_list)
m_mat=np.mat(m_list)
print(m_arr.mean(1))
print(m_mat.mean(1))

結果如下:

[1.5 3.5]

[[1.5]
[3.5]]

同理,在獲取某一行或某一列數據的時候也不一樣:

m_list=[[1,2],[3,4]]
m_arr=np.array(m_list)
m_mat=np.mat(m_list)
print(m_arr[:,1]) #獲取第二列元素
print(m_mat[:,1])

結果爲:

[2 4]

[[2]
 [4]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章