- Python 資料結構與演算法教程
- Python - 資料結構 首頁
- Python - 資料結構 簡介
- Python - 資料結構 環境
- Python - 陣列
- Python - 列表
- Python - 元組
- Python - 字典
- Python - 二維陣列
- Python - 矩陣
- Python - 集合
- Python - 對映
- Python - 連結串列
- Python - 棧
- Python - 佇列
- Python - 雙端佇列
- Python - 高階連結串列
- Python - 雜湊表
- Python - 二叉樹
- Python - 搜尋樹
- Python - 堆
- Python - 圖
- Python - 演算法設計
- Python - 分治法
- Python - 遞迴
- Python - 回溯法
- Python - 排序演算法
- Python - 搜尋演算法
- Python - 圖演算法
- Python - 演算法分析
- Python - 大O記法
- Python - 演算法分類
- Python - 均攤分析
- Python - 演算法論證
- Python 資料結構與演算法 有用資源
- Python - 快速指南
- Python - 有用資源
- Python - 討論
Python - 矩陣
矩陣是二維陣列的一種特例,其中每個資料元素的大小嚴格相同。因此,每個矩陣也是一個二維陣列,但反之則不然。
矩陣對於許多數學和科學計算來說是非常重要的資料結構。正如我們在上一章中已經討論過的二維陣列資料結構,本章我們將重點關注特定於矩陣的資料結構操作。
我們還將使用 numpy 包進行矩陣資料操作。
矩陣示例
考慮記錄一週內早、中、晚、午夜測量的溫度的情況。可以使用陣列和 numpy 中可用的 reshape 方法將其表示為 7x5 矩陣。
from numpy import * a = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m = reshape(a,(7,5)) print(m)
輸出
上述資料可以表示為如下二維陣列:
[ ['Mon' '18' '20' '22' '17'] ['Tue' '11' '18' '21' '18'] ['Wed' '15' '21' '20' '19'] ['Thu' '11' '20' '22' '21'] ['Fri' '18' '17' '23' '22'] ['Sat' '12' '22' '20' '18'] ['Sun' '13' '15' '19' '16'] ]
訪問值
可以使用索引訪問矩陣中的資料元素。訪問方法與在二維陣列中訪問資料的方式相同。
示例
from numpy import *
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
['Wed',15,21,20,19],['Thu',11,20,22,21],
['Fri',18,17,23,22],['Sat',12,22,20,18],
['Sun',13,15,19,16]])
# Print data for Wednesday
print(m[2])
# Print data for friday evening
print(m[4][3])
輸出
執行上述程式碼後,將產生以下結果:
['Wed', 15, 21, 20, 19] 23
新增一行
使用以下程式碼在矩陣中新增一行。
示例
from numpy import * m = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m_r = append(m,[['Avg',12,15,13,11]],0) print(m_r)
輸出
執行上述程式碼後,將產生以下結果:
[ ['Mon' '18' '20' '22' '17'] ['Tue' '11' '18' '21' '18'] ['Wed' '15' '21' '20' '19'] ['Thu' '11' '20' '22' '21'] ['Fri' '18' '17' '23' '22'] ['Sat' '12' '22' '20' '18'] ['Sun' '13' '15' '19' '16'] ['Avg' '12' '15' '13' '11'] ]
新增一列
我們可以使用 insert() 方法向矩陣新增列。在這裡,我們必須指定要新增列的索引以及包含新列值的陣列。在下面的示例中,我們在開頭從第五個位置新增一個新列。
示例
from numpy import * m = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1) print(m_c)
輸出
執行上述程式碼後,將產生以下結果:
[ ['Mon' '18' '20' '22' '17' '1'] ['Tue' '11' '18' '21' '18' '2'] ['Wed' '15' '21' '20' '19' '3'] ['Thu' '11' '20' '22' '21' '4'] ['Fri' '18' '17' '23' '22' '5'] ['Sat' '12' '22' '20' '18' '6'] ['Sun' '13' '15' '19' '16' '7'] ]
刪除一行
我們可以使用 delete() 方法從矩陣中刪除一行。我們必須指定行的索引以及軸值,對於行,軸值為 0,對於列,軸值為 1。
示例
from numpy import * m = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m = delete(m,[2],0) print(m)
輸出
執行上述程式碼後,將產生以下結果:
[ ['Mon' '18' '20' '22' '17'] ['Tue' '11' '18' '21' '18'] ['Thu' '11' '20' '22' '21'] ['Fri' '18' '17' '23' '22'] ['Sat' '12' '22' '20' '18'] ['Sun' '13' '15' '19' '16'] ]
刪除一列
我們可以使用 delete() 方法從矩陣中刪除一列。我們必須指定列的索引以及軸值,對於行,軸值為 0,對於列,軸值為 1。
示例
from numpy import * m = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m = delete(m,s_[2],1) print(m)
輸出
執行上述程式碼後,將產生以下結果:
[ ['Mon' '18' '22' '17'] ['Tue' '11' '21' '18'] ['Wed' '15' '20' '19'] ['Thu' '11' '22' '21'] ['Fri' '18' '23' '22'] ['Sat' '12' '20' '18'] ['Sun' '13' '19' '16'] ]
更新一行
要更新矩陣中行中的值,我們只需重新分配該行索引處的值。在下面的示例中,星期四的所有資料都標記為零。此行的索引為 3。
示例
from numpy import * m = array([['Mon',18,20,22,17],['Tue',11,18,21,18], ['Wed',15,21,20,19],['Thu',11,20,22,21], ['Fri',18,17,23,22],['Sat',12,22,20,18], ['Sun',13,15,19,16]]) m[3] = ['Thu',0,0,0,0] print(m)
輸出
執行上述程式碼後,將產生以下結果:
[ ['Mon' '18' '20' '22' '17'] ['Tue' '11' '18' '21' '18'] ['Wed' '15' '21' '20' '19'] ['Thu' '0' '0' '0' '0'] ['Fri' '18' '17' '23' '22'] ['Sat' '12' '22' '20' '18'] ['Sun' '13' '15' '19' '16'] ]
廣告