作者:王一哲
日期:2018/12/2
NumPy 是 Python 的運算套件,提供陣列 (ndarray)、矩陣 (matrix)……等常用的數學工具,運算速度比 Python 內建的資料格式快很多。NumPy 已經將許多常用的運算寫成函式,如果能善用這些函式,可以大幅加快程式的運算速度。以下是一些我目前常用到的陣列相關函式整理,如果之後有用到新的函式會再新增內容。請注意,以下的程式碼都省略了 import numpy as np。
一維陣列語法
二維陣列語法
數值格式可以是 整數 (int)、浮點數 (float)、複數 (complex),如果不指定的話系統會自動判斷。
範例:
功能:取得資料格式
假設陣列A為 array([1, 2, 3, 4, 5]),如果想要知道資料的格式,可以使用
假設陣列A為 array([1, 2, 3, 4, 5]),如果想要知道陣列A的長度,可以使用
假設陣列B為 array([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]]),維度為(2, 5),如果想要知道陣列B的維度,可以使用
如果使用以下的寫法,回傳的數值是列數。
如果使用以下的寫法,回傳的數值是第0列裡的元素數量。
功能:產生指定長度的一維陣列,每個元素皆為0。
語法
範例:
功能:產生指定長度的一維陣列,每個元素皆為1。
語法
範例:
功能:產生一維陣列,第一個元素為起始值,下一個元素為這個元素加上間隔,不包含結束值。起始值預設為0,間隔預設為1。
語法:
範例:
功能:產生一維陣列,第一個元素為起始值,最後一個元素為結束值,將兩者之間均勻分割為指定的數量-1。
語法:
範例:
陣列的的索引值 (index) 從0開始,假設陣列A為array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),取出索引值為3的元素,語法為
取出索引值為3到7的元素,語法為
取出索引值為0到倒數第3個元素,語法為
取出最後1個元素,語法為
反方向取出所有的元素,語法為
假設陣列A為 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),可以一次將所有的元素同時加、減、乘、除,語法為
假設陣列B為 array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19]),可以一次將兩個陣列中所有的元素同時加、減、乘、除,語法為
功能:將陣列中所有元素的值相加。
語法:
假設陣列A為 array([1, 2, 3, 4, 5]),則語法為
功能:找出陣列中所有元素的最小值。
語法:
假設陣列A為 array([1, 2, 3, 4, 5]),則語法為
功能:找出陣列中所有元素的最大值。
語法:
假設陣列A為 array([1, 2, 3, 4, 5]),則語法為
功能:將陣列下一個元素與這一個元素相減。
語法:
假設陣列A為 array([1, 2, 4, 7, 11, 16]),則語法為
如果想要用 Python 內建的串列 (list) 格式做到相同的效果,需要使用以下的寫法
功能:將陣列中所有元素的值限制在指定的範圍內。
語法:
假設陣列A為 array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]),如果要將元素值限制在 0.3 和 0.8 之間,則語法為
功能:回傳陣列當中符合條件的元素索引值。
語法:
假設陣列A為 array([ 0, 2, 4, 6, 8, 10]),如果要找所有大於5的元素索引值,則語法為
我們可以把回傳值傳給另一個陣列,假設陣列B為 array([10, 12, 14, 16, 18, 20]),如果想要取出符合 A > 5 對應的元素,則語法為
功能:將陣列改變成指定的維度,可以到3個以上的維度,但是這樣很難想像陣列的樣子,我通常只用到二維陣列。
語法:
假設陣列A為 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),如果要將陣列維度改為(2, 5),語法為
也可以將產生陣列以及改變維度兩件事一起完成,語法為
功能:將陣列中的元素行、列對調,通常會接在陣列物件之後。
假設陣列A為 array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]),若要將陣列轉置,語法為:
功能:將陣列以垂直方向疊合。
假設陣列A為 array([0, 1, 2, 3, 4])、陣列B為 array([5, 6, 7, 8, 9]),若要將陣列以垂直方向疊合,語法為:
另外還有兩個功能很類似的函式:np.stack、np.hstack,有興趣的同學可以上網搜尋使用說明。
功能:將兩個一維陣列交錯組合成二維陣列。
範例
輸出為
如果將程式碼改為
輸出會變為
NumPy 內建相當多方便的函式,如果能夠善用這些函式,可以大幅提升程式運作的效率。
Python