# Python NumPy 基礎教程 ###### tags: `程式教程` `程式` `python` ## NumPy基本操作(一) ### 重要知識點 - 介紹如何安裝及載入 NumPy。 - 依照陣列產生的需求,使用相對應的函式,建立 NumPy 陣列。 - 了解陣列屬性,在操作陣列時用來查看陣列資訊。 - NumPy 相關單元如果沒有特別說明的話,陣列均指 NumPy 陣列 (而非其他,例如 Python 陣列)。 ### NumPy 簡介 - NumPy 是廣受歡迎的 open source Python 程式庫,支援多維度陣列與矩陣運算,也針對陣列運算提供大量的數學函式庫。 - NumPy 的核心是由 C 語言開發,所以在陣列與矩陣運算時具有高效能的特性。 - 2019 年時 GitHub 統計指出有 74% 的機器學習專案中使用 NumPy。  ### 引入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 也提供隨機產生陣列元素的函式,可以用來建立陣列。  - 隨機陣列也可以產生不同分佈的元素,NumPy 提供的函式和分佈非常豐富,所有函式與詳細說明可以參考官方文件。 ### NumPy陣列的索引和切片 (Slicing) - 透過索引存取陣列元素或進行切片 (slicing),可以使用索引值,或是 [start:stop:step] 語法取得範圍內的元素,要留意的是起始-結束範圍仍是 half-open 的,所以回傳的元素將不包含結束索引的元素。 - 索引 -1 表示取得最後一個元素。切片如果只有給定 step 值為 -1 的話,則代表是反向取出,元素值是從最後一筆開始取出。 - 若沒有給定 start 或 stop 值的話則代表是取出該索引之前或之後的所有元素。若 start 和 stop 值都沒有給定的話,就是取出所有元素值。 ### NumPy 陣列的常用屬性 陣列的屬性在操作的過程中經常需要用到,常用屬性及說明如下表:  ### 知識點回顧 - 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)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.