1. NumPy 基礎運算 - part 1 課程資料來源: 5 numpy的基础运算 (教学教程) 創建兩個Array import numpy as np a = np.array([10,20,30,40,50,60,70,80]) b = np.arange(8) print(a) print(b) 執行結果 [10 20 30 40 50 60 70 80][0 1 2 3 4 5 6 7] 相減 c = a - b print(c) 執行結果 [10 19 28 37 46 55 64 73] 相加 c = a + b print(c) 執行結果 [10 21 32 43 54 65 76 87] 相乘 c = a * b print(c) 執行結果 [ 0 20 60 120 200 300 420 560] 平方 c = a**2print(c)c = b**2 print(c) 執行結果 [ 100 400 900 1600 2500 3600 4900 6400][ 0 1 4 9 16 25 36 49] 三角函數 c = 60 * np.sin(a) print(c)c = 80 * np.cos(b) print(c)c = 100 * np.tan(c) print(c) 執行結果 [-32.64126665 54.77671504 -59.28189745 44.70678963 -15.74249122 -18.28863727 46.43344089 -59.63331924][ 80. 43.22418447 -33.29174692 -79.19939973 -52.29148967 22.69297484 76.81362293 60.31218035][900.36549456 -94.68656446 317.61189136 -77.54375755 204.29086558 84.54150965 638.32447047 71.68114405] 邏輯判斷 print(b<6) print(a>60) print(a == 10) 執行結果 [ True True True True True True False False][False False False False False False True True][ True False False False False False False False] 建立多維度矩陣 ## 建立2x2 二維矩陣 a = np.array([[0, 1], [1, 1]]) b = np.arange(4).reshape((2,2)) print(a) print(b) 執行結果 [[0 1] [1 1]][[0 1] [2 3]] 矩陣乘法運算 補充: 矩陣內積(dot product)運算 numpy.dot()函数用法 內積定義 dot 用法一 c = a * b c_dot = np.dot(a, b )print(c) print(c_dot) 執行結果 [[0 1] [2 3]][[2 3] [2 4]] dot用法二 c_dot_2 = a.dot(b) print(c_dot_2) 執行結果 [[2 3] [2 4]] 補充:算法 總和、最大值、最小值 - Sum()、Min()、Max() 使用 import numpy as np a = np.random.random((5,6)) print(a) 執行結果 [[0.22667025 0.24476951 0.29306952 0.3450058 0.63912861 0.79662982] [0.88662849 0.65370446 0.6548403 0.20491901 0.40666716 0.81507563] [0.13013511 0.28810707 0.24427537 0.16024315 0.42845645 0.74784296] [0.10849957 0.04899922 0.41436152 0.48937569 0.83951887 0.04038496] [0.96675396 0.38796374 0.0566646 0.56787626 0.70060591 0.8537359 ]] 計算總和、最大值、最小值 print(np.sum(a)) print(np.max(a)) print(np.min(a)) 執行結果 13.6409088774131280.96675395996751720.04038496110920331 針對軸的方向進行查找 axis = 1: 以行來查找 axis = 0: 以列來查找 print("a: ", a) print("sum: ", np.sum(a, axis = 0)) print("min: ", np.min(a, axis = 1)) print("max: ", np.max(a, axis = 1)) 執行結果 a: [[0.22667025 0.24476951 0.29306952 0.3450058 0.63912861 0.79662982] [0.88662849 0.65370446 0.6548403 0.20491901 0.40666716 0.81507563] [0.13013511 0.28810707 0.24427537 0.16024315 0.42845645 0.74784296] [0.10849957 0.04899922 0.41436152 0.48937569 0.83951887 0.04038496] [0.96675396 0.38796374 0.0566646 0.56787626 0.70060591 0.8537359 ]]sum: [2.31868738 1.62354401 1.66321131 1.76741992 3.014377 3.25366926]min: [0.22667025 0.20491901 0.13013511 0.04038496 0.0566646 ]max: [0.79662982 0.88662849 0.74784296 0.83951887 0.96675396] 2. NumPy基礎運算 - part 2 課程資料來源: 6 numpy的基础运算2 (教学教程) 創建數組 import numpy as np A = np.arange(2, 18).reshape((4, 4)) print(A) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]] 找尋最大值與最小值位置索引 ## 找尋最小值位置索引 print(np.argmin(A)) ## 找尋最大值位置索引 print(np.argmax(A)) 執行結果 015 均值 print(np.mean(A)) print(np.average(A)) print(A.mean()) 執行結果 9.59.59.5 中位數 # print(A.median()) np.medium(A) 執行結果 AttributeError: module 'numpy' has no attribute 'medium' 錯誤原因: 沒有這個NumPy屬性用法 參考: https://stackoom.com/question/2iJ5b 累加 print(np.cumsum(A)) 執行結果 [ 2 5 9 14 20 27 35 44 54 65 77 90 104 119 135 152] 累差 print(np.diff(A)) 執行結果 [[1 1 1] [1 1 1] [1 1 1] [1 1 1]] 得到陣列Array中非零元素所在的位置索引 補充: np.nonzeros用法 print(A) print(np.nonzero(A)) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]](array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) 自動排序 import numpy as np A = np.arange(18, 2, -1).reshape((4,4)) print(A) ## 排序 print(np.sort(A)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[15 16 17 18] [11 12 13 14] [ 7 8 9 10] [ 3 4 5 6]] 矩陣轉置 print(A) print(A.T) print(np.transpose(A)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[18 14 10 6] [17 13 9 5] [16 12 8 4] [15 11 7 3]][[18 14 10 6] [17 13 9 5] [16 12 8 4] [15 11 7 3]] clip用法: 將比指定的最小值小的元素轉為指定的最小值,將比指定的最大值大的元素轉為指定的最大值 print(A) print(np.clip(A, 6, 16)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[16 16 16 15] [14 13 12 11] [10 9 8 7] [ 6 6 6 6]]