logo
Loading...

numpy & pandas 介紹 - numpy屬性 - numpy array的創建 - 莫凡 Python 基礎研習讀書會 - Cupoy

1. NumPy與Pandas介紹 課程資料來源: 1 numpy & pandas 有什么用? (教学教程) 應用的地方 Data Analysis 數據分析 Machine Learn...

1. NumPy與Pandas介紹 課程資料來源: 1 numpy & pandas 有什么用? (教学教程) 應用的地方 Data Analysis 數據分析 Machine Learning 機器學習 Deep Learning 深度學習 當然有相當多的實務應用上都會使用它們,像是數據前處理、數據視覺化等等,都會透過它們來將資料進行一個清理與計算 補充: NumPy是什麼?  說明:Numerical Python(數值Python)的縮寫,它提供了強大的接口,讓我們存儲和操作密集的數據緩衝區(dense data buffers) Python關聯:NumPy的數組像是Python內建的列表(list)型態,但是NumPy數組在儲存和操作大量數據時,提供了比Python本身更好的效能 重要性:NumPy數組接近是整個Python數據科學領域工具鏈的核心,許多我們所使用的數據分析與處理套件都是以它為基礎構建的 為什麼要使用NumPy和Pandas? 它所消耗的電腦資源相當少: 因為它採用矩陣運算,所以會比Python原生自帶的字典Dictionary和列表快非常多 運算速度非常快: 由於NumPy和Pandas都是採用C語言來撰寫的,而Pandas是基於NumPy所開發的,所以算是NumPy的升級版本 補充: 為什麼NumPy的數組進行計算操作時是非常快的? 計算NumPy的數組可以是非常快,也可以是非常慢的,然而快的原因: 向量化的操作 都是透過 NumPy 的通用函式(ufuncs : Universal Functions)來實現的 例如: 我們今天要拿兩個矩陣進行計算,如果都用Python字典Dictionary或是列表一個一個相加就會比較慢,如果使用NumPy的向量化操作就會快非常多 2. NumPy屬性 課程資料來源: 3 numpy 属性 (教学教程) 導入NumPy套件 ## 導入NumPy套件 import numpy as np 將列表轉換為矩陣 ## 將列表轉化為矩陣 array = np.array([[2,4,6],                  [3,7,9],                  [1,3,8]]) array 執行結果 array([[2, 4, 6],       [3, 7, 9],       [1, 3, 8]]) 數組的屬性 - 維度、形狀、大小 ## 數組維度 print('number of dim: ', array.ndim) ​## 數組的形狀 - 行數核列數 print('array shape: ', array.shape) ​## 數組的大小 - 元素個數 print('size: ', array.size) 執行結果 number of dim:  2array shape:  (3, 3)size:  9 3. NumPy創建數組Array 課程資料來源: 4 numpy 的创建 array (教学教程) 簡單創建一個數組 ## 創建一個數組 a = np.array([2,6,8]) print(a) 執行結果 [2 6 8] 指定創建數組的數據類型 整數 ## 指定創建數組的數據類型 a = np.array([2,6,8], dtype = np.int) print(a.dtype)​ a = np.array([2,6,8], dtype = np.int64) print(a.dtype) 執行結果 int32int64 浮點數 ## 指定創建數組的數據類型 a = np.array([2,6,8], dtype = np.float) print(a.dtype)​ a = np.array([2,6,8], dtype = np.float32) print(a.dtype) 執行結果 float64 float32 創建特定的數組 創建各類型數組的方法 array: 創建數組 dtype: 數據類型  zeros: 創建全為0的數組 ones: 創建全為1的數組 empty: 創建接近0的數組 arange: 指定創建數組裡面的數據範圍值 linspace: 構建線段的數據值 reshape: 改變數組形狀 array ## 創建數組 a = np.array([[1,2,3],[4,5,6]]) print(a) 執行結果 [[1 2 3] [4 5 6]] zeros ## 創建值全為0的5行6列數組 a = np.zeros((5,6)) print(a) 執行結果 [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] ones ## 創建值全為1的5行6列數組 a = np.ones((5,6)) print(a) 執行結果 [[1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.]] ones + 指定dtype ## 創建值全為1的5行6列數組,指定數據類型為int a = np.ones((5,6), dtype = np.int) print(a) print(a.dtype) 執行結果 [[1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1]]int32 empty ## 創建一個全空,但每個元素值都接近於0的數組 a = np.empty((4,5)) print(a) ​## 創建一個全空,但每個元素值都接近於0的數組,並指定數據類型為int b = np.empty((4,5), dtype = np.int) print(b) 執行結果 [[6.23042070e-307 4.67296746e-307 1.69121096e-306 9.34609111e-307  1.33511018e-306] [1.33511969e-306 6.23037996e-307 6.23053954e-307 9.34609790e-307  8.45593934e-307] [9.34600963e-307 3.56036603e-307 1.37961641e-306 1.37961302e-306  1.11259940e-306] [1.60219035e-306 1.11261570e-306 1.06811354e-306 8.34448533e-308  1.21347091e+295]][[ -13901544        605         45          0          0] [         0          0          0          0 1819042080] [1634607739  975332717 1685353250  578057583 1702109740] [ 975336568 1869375010  875983969 1818652252  863265135]] arange ## 創建一個指定範圍的數組: 0~60,中間隔5的值 a = np.arange(0,60,5)print(a) 執行結果 [ 0  5 10 15 20 25 30 35 40 45 50 55] linspace ## 創建線段行數據 - 1~20之間切10個點 a = np.linspace(1,20,10)print(a) 執行結果 [ 1.          3.11111111  5.22222222  7.33333333  9.44444444 11.55555556 13.66666667 15.77777778 17.88888889 20.        ] reshape ## 改變數組形狀 a = np.linspace(1,20,10).reshape((5,2))print(a) 執行結果 [[ 1.          3.11111111] [ 5.22222222  7.33333333] [ 9.44444444 11.55555556] [13.66666667 15.77777778] [17.88888889 20.        ]] 4. 補充閱讀 NumPy的屬性與操作 NumPy 的各種用法 - 讀書筆記 - Python Data Science Handbook - Python數據科學 - NumPy Array的屬性與操作(串聯與切割 - Concatenate、hstack、vstack、split、vsplit、 hsplit) - NumPy Array的各種計算方法 - UFuncs - #6