標籤: 程式設計
圖片來源:nature.com
想透過電子郵件收到我的文章,按下訂閱鈕🎉
什麼是陣列程式設計
簡單扼要地說明陣列程式設計的定義,指的其實就是以程式語言的語法,來進行數學中向量(又稱一維陣列,Vector)、矩陣(又稱二維陣列,Matrix)與張量(又稱高維陣列,Tensor)的一系列操作與運算。
陣列程式設計被廣泛應用在多項領域的研究和分析,包含物理、化學、天文、地球科學、生物、心理、工程、金融、經濟與社會科學;或許可以這樣理解,當科學研究人員在選擇使用哪個程式語言來處理資料時,第一個考量就是該程式語言是否有適當的資料結構以便進行陣列程式設計?這點也是 R 與 Matlab 這樣內建有陣列資料結構的程式語言廣受研究人員歡迎的主要原因之一,而 NumPy 就是讓 Python 程式語言能夠進行陣列程式設計的第三方套件,開闢 Python 在科學研究人員中的一席之地。
Python 透過 NumPy 實現陣列程式設計
NumPy 是 Numerical Python 的縮寫,在 NumPy 於 2006 問世之前,在 Python 中實現陣列程式設計所使用的第三方套件有兩個:Numeric 與 Numarray,前者處理數值運算、後者處理陣列結構,我們可以將 NumPy 視為兩者的集大成。
在問世年的 15 年後,NumPy 儼然已經成為 Python 科學計算生態系統的基石與中心,所有相關的第三方套件都以 N 維陣列(ndarray)作為標準的資料交換格式,包含極端受歡迎的 SciPy、Matplotlib、pandas、scikit-learn、TensorFlow 與 PyTorch 等第三方套件。
五個陣列程式設計元素
陣列程式設計的五個元素可以從基礎的 N 維陣列(ndarray)方法、屬性來理解:
資料結構(Data structure):具有建立陣列的函式;
索引(Indexing):具有從陣列中取出資料值或片段陣列的語法;
向量化(Vectorization):具有通用函式、元素級別運算的特性;
廣播(Broadcasting):具有運算純量以及陣列的預設特性;
化簡(Reduction):具有沿指定維度呼叫聚合函式的特性。
專案簡介
在這個專案中,我們打算使用 Python 的 NumPy 套件體驗五個陣列程式設計元素:資料結構(Data structure)、索引(Indexing)、向量化(Vectorization)、廣播(Broadcasting)與化簡(Reduction)。透過這個專案,我們能夠具體暸解 NumPy 是如何實現陣列程式設計。
點選連結可以在瀏覽器開啟互動 Jupyter Notebook 查看完整程式碼以及專案細節:
想暸解哪些主題,留言跟我說👇