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]]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM