# Python NumPy 基礎教程 ###### tags: `程式教程` `程式` `python` ## NumPy基本操作(一) ### 重要知識點 - 介紹如何安裝及載入 NumPy。 - 依照陣列產生的需求,使用相對應的函式,建立 NumPy 陣列。 - 了解陣列屬性,在操作陣列時用來查看陣列資訊。 - NumPy 相關單元如果沒有特別說明的話,陣列均指 NumPy 陣列 (而非其他,例如 Python 陣列)。 ### NumPy 簡介 - NumPy 是廣受歡迎的 open source Python 程式庫,支援多維度陣列與矩陣運算,也針對陣列運算提供大量的數學函式庫。 - NumPy 的核心是由 C 語言開發,所以在陣列與矩陣運算時具有高效能的特性。 - 2019 年時 GitHub 統計指出有 74% 的機器學習專案中使用 NumPy。 ![](https://i.imgur.com/RCkNRhe.png) ### 引入numpy套件 ``` =python import numpy as np ``` ### 查看套件版本 ``` =python np.__version__ ``` ### 建立 NumPy array (陣列) - 建立陣列的方式是透過執行 NumPy 函式,依照不同的目的,以下逐一介紹常用來建立陣列的函式。 - 最基本的方式是呼叫 array() 函式,可將 Python list 或元組 (tuple) 的值建立為 NumPy array。 - 要用序列數字產生等差一維陣列的話,可以使用 arange() 與 linspace() 函式,兩者的函式引數很類似,其中結束值為必輸,起始值、間隔值非必輸。產生的序列數字包含起始值但不包含結束值,也就是 [start, stop) 的表示方式。 - 不同的地方在於 linspace() 對於產生的元素可以有更多的控制。 - 呼叫 zeros()、ones() 函式,可以依照傳入的形狀引數,建立元素全為 0、全為 1 的陣列。 - 使用 empty() 函式則是不需要給定起始值,但是可以建立給定形狀的陣列,元素值則會隨機給定。 - NumPy 也提供隨機產生陣列元素的函式,可以用來建立陣列。 ![](https://i.imgur.com/d5M1naA.png) - 隨機陣列也可以產生不同分佈的元素,NumPy 提供的函式和分佈非常豐富,所有函式與詳細說明可以參考官方文件。 ### NumPy陣列的索引和切片 (Slicing) - 透過索引存取陣列元素或進行切片 (slicing),可以使用索引值,或是 [start:stop:step] 語法取得範圍內的元素,要留意的是起始-結束範圍仍是 half-open 的,所以回傳的元素將不包含結束索引的元素。 - 索引 -1 表示取得最後一個元素。切片如果只有給定 step 值為 -1 的話,則代表是反向取出,元素值是從最後一筆開始取出。 - 若沒有給定 start 或 stop 值的話則代表是取出該索引之前或之後的所有元素。若 start 和 stop 值都沒有給定的話,就是取出所有元素值。 ### NumPy 陣列的常用屬性 陣列的屬性在操作的過程中經常需要用到,常用屬性及說明如下表: ![](https://i.imgur.com/XgG6I5Y.png) ### 知識點回顧 - NumPy 的安裝及載入。 - 如何依照需求,使用相對應的函式產生陣列。 - 陣列的索引、切片、以及屬性,都是 NumPy 基本操作時常會用到的工具。 ## 範例 https://drive.google.com/file/d/16YkyPHLmIr4nNC6IdlHWQrBMGZEXVu4y/view?usp=sharing 記得用Colab開啟 ## 作業 https://drive.google.com/file/d/16rcrTJIwoW6oEmLVkx05VoUXfK7RGzUw/view?usp=sharing ## 快速連結 第二章:[範例](https://drive.google.com/file/d/16koVfYWxAR10XvB4Nw24Ylej2JMQ0v-R/view?usp=sharing)、[作業](https://drive.google.com/file/d/16yVWPAeprowe4zJZUMweccwtdT1aRGy-/view?usp=sharing) 第三章:[範例](https://drive.google.com/file/d/16jye5NbQEq4RQeCzuf1hCA-doXIG2HI3/view?usp=sharing)、[作業](https://drive.google.com/file/d/16yvab0hrjCXaYLDqHckl7R994LEx3soY/view?usp=sharing) 第四章:[範例](https://drive.google.com/file/d/16glgIWnwjcVZb0trS53zNOd2sbFEaKbT/view?usp=sharing)、[作業](https://drive.google.com/file/d/172a-2nnWhg0ZFgEreo-udvAggcZRH2VT/view?usp=sharing) 第五章:[範例](https://drive.google.com/file/d/16fkwctJ6wtPDPLJhz0l1RQJOIY19m_a3/view?usp=sharing)、[作業](https://drive.google.com/file/d/174ZzA_WHbwTDZ7nAIox9O60bBalMYbnO/view?usp=sharing) 第六章:[範例](https://drive.google.com/file/d/16f_FG4z64Cqzxj_9Y2Y5cxrp3kwxHbGY/view?usp=sharing)、[作業](https://drive.google.com/file/d/16rHCRctcrq7a5VXqkv4jJGI7sUmeilN0/view?usp=sharing) 第七章:[範例](https://drive.google.com/file/d/16cp6ayReg4_brhHSkcj-exltjVe5dGIZ/view?usp=sharing)、[作業](https://drive.google.com/file/d/16qZNvxSd7CIfILx1oHzp9WnxoRAgEpM-/view?usp=sharing) 第八章:[範例](https://drive.google.com/file/d/16bgTQsdvdQfWgt9UDVgw9gDM8xckN4vF/view?usp=sharing)、[作業](https://drive.google.com/file/d/16owhcKfR78byfLS4A4GbKft1XmPlpvyc/view?usp=sharing)