python --資料視覺化(二)
阿新 • • 發佈:2018-11-26
一、NumPy
1、簡介:
官網連結:http://www.numpy.org/
NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫
2、基本功能:
- 快速高效的多維陣列物件ndarray
- 用於對陣列執行元素級計算以及直接對陣列執行數學運算的函式
- 用於讀寫硬碟上基於陣列的資料集的工具
- 線性代數運算、傅立葉變換,以及隨機數生成
- 用於將C、C++、Fortran程式碼整合到Python的工具
- 除了為Python提供快速的陣列處理能力,NumPy在資料分析方面還有另外一
- 個主要作用,即作為在演算法之間傳遞資料的容器。
3、NumPy的ndarray 建立ndarray
* 陣列建立函式
demo:
import numpy print('使用普通一維陣列生成NumPy一維陣列') data = [6, 7.5, 8, 0, 1] arr = numpy.array(data) print(arr) print(arr.dtype) print('使用普通二維陣列生成NumPy二維陣列') data = [[1, 2, 3, 4], [5, 6, 7, 8]] arr = numpy.array(data) print(arr) print('列印陣列維度') print(arr.shape)print('使用zeros/empty') print(numpy.zeros(10)) # 生成包含10個0的一維陣列 print(numpy.zeros((3, 6))) # 生成3*6的二維陣列 print(numpy.empty((2, 3, 2))) # 生成2*3*2的三維陣列,所有元素未初始化。 print print('使用arrange生成連續元素') print(numpy.arange(15)) # [0, 1, 2, ..., 14]
輸出:
使用普通一維陣列生成NumPy一維陣列 [6. 7.5 8. 0. 1. ] float64 使用普通二維陣列生成NumPy二維陣列 [[View Code1 2 3 4] [5 6 7 8]] 列印陣列維度 (2, 4) 使用zeros/empty [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.]] [[[8.82769181e+025 7.36662981e+228] [7.54894003e+252 2.95479883e+137] [1.42800637e+248 2.64686750e+180]] [[1.09936856e+248 6.99481925e+228] [7.54894003e+252 7.67109635e+170] [2.64686750e+180 5.63234836e-322]]] 使用arrange生成連續元素 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
4、NumPy的ndarray NumPy資料型別
demo:
import numpy as np print('生成陣列時指定資料型別') arr = np.array([1, 2, 3], dtype = np.float64) # 生成ndarray陣列,資料型別:float64 print(arr.dtype) arr = np.array([1, 2, 3], dtype = np.int32) print(arr.dtype) print ('使用astype複製陣列並轉換資料型別') int_arr = np.array([1, 2, 3, 4, 5]) float_arr = int_arr.astype(np.float) print (int_arr.dtype) print (float_arr.dtype) print ('使用astype將float轉換為int時小數部分被捨棄') float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1]) int_arr = float_arr.astype(dtype = np.int) print (int_arr) print ('使用astype把字串轉換為陣列,如果失敗丟擲異常。') str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_) float_arr = str_arr.astype(dtype = np.float) print (float_arr) print ('astype使用其它陣列的資料型別作為引數') int_arr = np.arange(10) float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64) print (int_arr.astype(float_arr.dtype)) print (int_arr[0], int_arr[1] ) # astype做了複製,陣列本身不變。
輸出:
生成陣列時指定資料型別 float64 int32 使用astype複製陣列並轉換資料型別 int32 float64 使用astype將float轉換為int時小數部分被捨棄 [ 3 -1 -2 0 12 10] 使用astype把字串轉換為陣列,如果失敗丟擲異常。 [ 1.25 -9.6 42. ] astype使用其它陣列的資料型別作為引數 [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] 0 1View Code
5、NumPy的ndarray 陣列和標量之間的運算
- 不用編寫迴圈即可對資料執行批量運算
- 大小相等的陣列之間的任何算術運算都會將運算應用到元素級
- 陣列與標量的算術運算也會將那個標量值傳播到各個元素
demo:
import numpy as np # 陣列乘法/減法,對應元素相乘/相減。 arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]]) print (arr * arr) # 不需要做迴圈,相當於對應元素進行平方處理 print (arr - arr) # 標量操作作用在陣列的每個元素上 arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]]) print (1 / arr) print (arr ** 0.5) # 開根號
輸出:
[[ 1. 4. 9.] [16. 25. 36.]] [[0. 0. 0.] [0. 0. 0.]] [[1. 0.5 0.33333333] [0.25 0.2 0.16666667]] [[1. 1.41421356 1.73205081] [2. 2.23606798 2.44948974]]View Code