# Numpy 參考資料:https://numpy.org/doc/stable/reference/ ## np.array([]) 若要製造一個矩陣,可使用此函式。 ## array.ndim 可查看array是幾維矩陣。 ## array.size 可查看有多少元素在array裡。 ## array.transpose() or array.T 可將矩陣轉置,row變成column,column變成row。 ```python= import numpy as np arr = np.array([[1,2,3],[4,5,6],[7,8,9]) print(arr) #output #[[1 2 3] #[4 5 6] #[7 8 9]] print(arr.transpose()) #output #[[1 4 7] #[2 5 8] #[3 6 9]] ``` ## np.ones((i,j)) 可製造一個i\*j且內容皆為1的矩陣。 ## np.zeros((i,j)) 可製造一個i\*j且內容皆為0的矩陣。 ## dtype dtype可以在許多函式裡當參數,例如在np.array()、np.ones()、np.zeros()裡都可以加入此參數,此參數的功用是使矩陣裡可以使用dtype裡的型態,例如: ```python= import numpy as np arr = np.array([1,2,3],[4,5,6],[7,8,9],dtype = float) print(arr) a = np.zeros((2,3),dtype = int) print(a) print(arr.dtype)#output:float64 ``` ## np.linspace(-np.pi, np.pi, num=100, endpoint=True) 第一個參數為起始數,第二個參數為終止數,第三個參數為共有幾個點,第四個參數為是否包含np.pi。 ```python= import numpy as np a = np.linspace(1,10,5,endpoint = True) b = np.linspace(1,10,5,endpoiont = False) print(a) print(b) ``` ## np.arange() np.arange(n)#產生0~n-1的數 np.arange(m,n,step)#產生m到n-1,step代表間隔為多少。 ## np.argmin and np.argmax 找出矩陣裡最小和最大的索引 ```python= import numpy as np arr = np.array([[1,2,3],[4,5,6],[7,8,9]],dtype = float) min_idx = np.argmin(arr) max_idx = np.argmax(arr) print(min_idx) print(max_idx) ``` ## np.empty() 將一個矩陣做宣告,但沒有初始化。 ## np.median()、np.mean()、np.cumsum() np.median()矩陣中尋找中位數 np.mean()得矩陣的平均 np.cumsum()累加 ```python= import numpy as np arr = np.array([[1,2,3],[4,5,6],[7,8,9]]) summ = np.cumsum(arr) print(summ)#[ 1 3 6 10 15 21 28 36 45] ``` ## np.reshape() 重新塑造矩陣的形式。 ## np.astype() 強制更換型態。 ## np.newaxis 增加一個維度。 ```python= import numpy as np x = np.linspace(-1,1,30)[:,np.newaxis] print(x) ``` ## array.itemsize & array.nbytes ```python= import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.itemsize) print(a.nbytes) ``` itemsize是指每一個元素的記憶體使用量,而nbytes是array裡所有元素的記憶體使用量。 ## array.flatten() & array.ravel() 將原本多維陣列打平成一維陣列。 ```python= import numpy as np a = np.array([[1,2,3],[4,5,6]]) b = a.flatten() print(b) print('==============') x = np.array([[1,2,3],[4,5,6]]) y = x.ravel() print(y) ``` array.flatten() 和 array.ravel()有個叫order的引數,預設為C,常用的引數值有 C 和 F,C代表C-stytle,是以row為主的展開,而F代表Fortran-style,是以column為主的展開。 ```python= import numpy as np a = np.array([[1,2,3],[4,5,6]]) b = a.flatten(order = 'C') print(b) c = a.flatten(order = 'F') print(c) print('==============') x = np.array([[1,2,3],[4,5,6]]) y = x.ravel(order = 'C') print(y) z = x.ravel(order = 'F') print(z) ``` ## 合併array ### concatenate 將兩個ndarray做合併,要注意,兩個ndarray要有一樣的shape。 ```python= import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) b = np.array([[10,11,12],[13,14,15],[16,17,18]]) print(np.concatenate((a,b))) ``` ## where <span style = color:red>numpy.where(condition[, x, y])</span> ```python= import numpy as np a = np.random.randint(-50,50,50) print(a) print(np.where(a > 0,'T','F')) ``` ## 四則運算 np.add():相加 np.substract():相減 np.multiply():相乘 np.divide():相除 np.mod():取餘數 ```python= import numpy as np a = np.array([1,2,3,4,5]) b = np.array([5,10,15,20,25]) print(np.add(a,b)) print(np.subtract(a, b)) print(np.multiply(a,b)) print(np.divide(a,b)) print(np.mod(a,b)) ``` ## 數據分析 ```python= import numpy as np math = np.array([80,50,68,74,88]) print('Math:') print('平均:',np.nanmean(math)) print('最高分:',np.nanmax(math)) print('最低分:',np.nanmin(math)) print('標準差:',np.nanstd(math)) print('變異數:',np.nanvar(math)) print('相關係數:',np.corrcoef(math)) ``` ## dot() && @ 運算內積的方式。 ```python= import numpy as np ham = np.array([1,2,3]) egg = np.array([4,5,6]) print(np.dot(ham, egg))# output : 32 print(ham @ egg)# output : 32 ``` ## np.exp 自然指數函數 如果有在做ML的話,可能會運用到softmax,其中原理就是將所有輸入的資料進入一個轉換,然後相加等於1,那我們會用到exp做轉換,雖然整體轉換過程不是只用到exp,但是exp是一個非常重要的過程。 exp在數學中就是自然指數函數,用法如下: ```python= import numpy as np a = 2.7 b = 1.3 c = -4 arr = np.array([a,b,c]) result = np.exp(arr) print(result) ```