本程式放置於Google Colab,共用網址如下。
https://colab.research.google.com/drive/1RMjLpvGfTkaUN7ScnU9EHI2NY_J45lDi?usp=sharing
以下介紹numpy的常見功能
(1)比較ndarray與list的執行效率
執行結果:
Wall time: 13 ms
執行結果:
Wall time: 798 ms
(2)隨機產生數值初始化ndarray
使用np.random.randn可以產生多維度隨機數值的ndarray
執行結果:
[[-0.22331162 -0.11647046 0.39733834]
[ 1.10966249 1.532135 0.77449616]]
[[-22.33116201 -11.64704585 39.73383433]
[110.9662493 153.2135004 77.44961623]]
[[-0.44662324 -0.23294092 0.79467669]
[ 2.21932499 3.06427001 1.54899232]]
[[0.55337676 0.76705908 1.79467669]
[3.21932499 4.06427001 2.54899232]]
[[0.04986808 0.01356537 0.15787776]
[1.23135085 2.34743767 0.59984431]]
float64
(2, 3)
(3)使用list初始化ndarray
使用np.array可以將list轉換成ndarray
執行結果:
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
1
(10,)
float64
[[1 2 3]
[4 5 6]]
2
(2, 3)
int32
(4)使用zeros初始化ndarray
zeros會使ndarray的每一個元素都是0
執行結果:
[0. 0.]
1
(2,)
float64
[[0. 0. 0.]
[0. 0. 0.]]
2
(2, 3)
float64
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
3
(2, 3, 4)
float64
(5)使用ones與empty初始化ndarray
ones會使ndarray的每一個元素都是1 empty會使ndarray的每一個元素都未指定數值
執行結果:
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
3
(2, 3, 4)
float64
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
3
(2, 3, 4)
float64
(6)使用reshape可以修改ndarray每個維度的元素個數
執行結果:
[ 0 1 2 3 4 5 6 7 8 9 10 11]
(12,)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
(3, 4)
(7)使用dtype可以指定ndarray的資料型別
執行結果:
[1. 2. 3.]
float64
[1 2 3]
int32
(8)使用astype可以轉換ndarray的資料型別
執行結果:
[1 2 3]
int32
[1. 2. 3.]
float64
(9)ndarray的算數與比較運算
執行結果:
[[ 2 4 6]
[14 16 18]]
[[0 0 0]
[0 0 0]]
[[ 1 4 9]
[49 64 81]]
[[2. 2. 2.]
[2. 2. 2.]]
[[ 1 4 9]
[49 64 81]]
[[False False True]
[ True True True]]
(10)ndarray的比較與設定運算
執行結果:
[[-0.92846946 -1.18588016 -0.24435678 -0.6358072 -0.15763856]
[-0.66257377 -0.93743447 0.39980675 -1.50243811 0.18126654]
[-1.35889331 0.6494872 2.65541657 0.74682837 -0.68267202]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0.39980675 0. 0.18126654]
[0. 0.6494872 2.65541657 0.74682837 0. ]]
(11)使用slice切割ndarray
一維陣列
執行結果:
[4 5]
[6 7 8 9]
[6 7 8]
[9 8 7 6 5 4 3 2 1 0]
[ 0 1 2 3 -1 -1 6 7 8 9]
[0 1 2 3]
二維陣列
執行結果:
[5 6 7 8 9]
[[ 5 6 7 8 9]
[10 11 12 13 14]]
[7 8 9]
[[2 3 4]
[7 8 9]]
[[ 2 3]
[ 7 8]
[12 13]]
(12)ndarray與矩陣運算
執行結果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
(3, 4)
[[ 0 4 8]
[ 1 5 9]
[ 2 6 10]
[ 3 7 11]]
[[ 14 38 62]
[ 38 126 214]
[ 62 214 366]]
[[ 14 38 62]
[ 38 126 214]
[ 62 214 366]]
(13)使用numpy所提供函式進行運算
執行結果:
[0 1 2 3 4 5 6 7 8 9]
[0. 1. 1.41421356 1.73205081 2. 2.23606798
2.44948974 2.64575131 2.82842712 3. ]
[1.00000000e+00 2.71828183e+00 7.38905610e+00 2.00855369e+01
5.45981500e+01 1.48413159e+02 4.03428793e+02 1.09663316e+03
2.98095799e+03 8.10308393e+03]
[-0.23948754 -1.23238643 -0.16871326 -1.1428332 0.68690613 1.91274961
1.08754567 -0.09297939 -1.70937289 -0.36684975]
[-0.14365469 -0.02919804 -0.82955533 1.13644393 -0.41517612 -0.40627799
0.23016412 0.53066663 0.43801555 0.09678028]
[-0.14365469 -0.02919804 -0.16871326 1.13644393 0.68690613 1.91274961
1.08754567 0.53066663 0.43801555 0.09678028]
[-1. -1. -1. 1. -1. -1. 1. 1. 1. 1.]
[-1. -1. -1. 1. -1. -1. 0. 0. 0. 0.]
[-0. -0. -0. 2. -0. -0. 1. 1. 1. 1.]
(14)使用ndarray進行統計分析
執行結果:
[[4 6 2 4]
[4 3 5 5]
[6 2 5 1]]
6
47
[14 11 12 10]
[16 17 14]
[[ 4 6 2 4]
[ 8 9 7 9]
[14 11 12 10]]
[[ 4 10 12 16]
[ 4 7 12 17]
[ 6 8 13 14]]
3.9166666666666665
1.552328000849763
2.4097222222222223
(15)使用sort進行排序,使用unique進行排序並刪除重複的元素
執行結果:
[76 40 56 58 22 84 27 72 4 15 65 46 97 7 25 57 59 54 12 56]
[ 4 7 12 15 22 25 27 40 46 54 56 56 57 58 59 65 72 76 84 97]
[ 4 7 12 15 22 25 27 40 46 54 56 57 58 59 65 72 76 84 97]
(16)反矩陣與行列式
執行結果:
[[4 5 1]
[3 5 4]
[5 6 6]]
[[ 0.22222222 -0.88888889 0.55555556]
[ 0.07407407 0.7037037 -0.48148148]
[-0.25925926 0.03703704 0.18518519]]
26.99999999999999
參考資料 Python for Data Analysis, 2nd Edition by Wes McKinney