引言 : python
數據分析 : 就是把隱藏在一些看似雜亂無章的數據背後的信息提煉出來,總結出研究對象的內在規律 . 數組
數據分析三劍客 : Numpy 數組計算dom
Pandas 表計算與數據分析ide
Matplotlib 繪圖和可視化函數
一 . NumPy
1 . NumPy(Numerical Python) 是 python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算 , 此外也針對數組運算提供大量的數學函數庫工具
2 . NumPy是高性能科學計算和分析的post
- ndarray : 一個多維數組結構,高效且節省空間
- 無需循環對總體數據進行快速運算的科學函數
- * 讀寫磁盤數據的工具以及用於操做內存映射文件的工具
- * 線性代數 , 隨機數生成和博裏葉變換功能
- * 用於集成C , C++ 等代碼的工具
3 . 安裝方法 : 性能
pip install numpy spa
二 . 建立ndarray
注意 : 示例均是在jupyter上演示的3d
1 . 使用 np.array() 建立
# 導包 # 一般都將 numpy簡化成np import numpy as np
1) . 一維數組的建立
np.array([1,2,3,4.5])
2) . 二維數組的建立 np.array([[1,2,3,4],[5,6,7,8]])
注意 :
- numpy默認ndarray的全部元素的類型是相同的
- 若是傳進來的列表中包含不一樣的類型,則統一爲同一類型,優先級:str>float>int
3) . 使用matplotlib.pyplot獲取一個numpy數組,數據來源於圖片
2 . 使用 np 的 routines 函數建立
建立ndarray:
array() 將列表轉換爲數組,可選擇顯式指定dtype
arange() range的numpy版,支持浮點數
linspace() 相似arange(),第三個參數爲數組長度
zeros() 根據指定形狀和dtype建立全0數組
ones() 根據指定形狀和dtype建立全1數組
empty() 根據指定形狀和dtype建立空數組(隨機值)
eye() 根據指定邊長和dtype建立單位矩陣
例如 :
三 . ndrray---多維數組對象
1 . 經常使用屬性 :
- T 數組的轉置(對高維數組而言)
- dtype 數組元素的數據類型
- size 數組元素的個數
- ndim 數組的維數
- shape 數組的維度大小(以元組形式)
2 . 經常使用方法 :
array.shape array的規格 array.ndim array.dtype array的數據規格 numpy.zeros(dim1,dim2) 建立dim1*dim2的零矩陣 numpy.arange numpy.eye(n) /numpy.identity(n) 建立n*n單位矩陣 numpy.array([…data…], dtype=float64 ) array.astype(numpy.float64) 更換矩陣的數據形式 array.astype(float) 更換矩陣的數據形式 array * array 矩陣點乘 array[a:b] 切片 array.copy() 獲得ndarray的副本,而不是視圖 array [a] [b]=array [ a, b ] 二者等價 name=np.array(['bob','joe','will']) res=name==’bob’ res= array([ True, False, False], dtype=bool) data[True,False,…..] 索引,只索取爲True的部分,去掉False部分 經過布爾型索引選取數組中的數據,將老是建立數據的副本。 data[ [4,3,0,6] ] 索引,將第4,3,0,6行摘取出來,組成新數組 data[-1]=data[data.__len__()-1] numpy.reshape(a,b) 將a*b的一維數組排列爲a*b的形式 array([a,b,c,d],[d,e,f,g]) 返回一維數組,分別爲[a,d],[b,e],[c,f],[d,g] array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ] array.T array的轉置 numpy.random.randn(a,b) 生成a*b的隨機數組 numpy.dot(matrix_1,matrix_2) 矩陣乘法 array.transpose( (1,0,2,etc.) ) 對於高維數組,轉置須要一個由軸編號組成的元組
四 . ndarray的基本操做
1、數組和標量之間的運算 a+1 a*3 1//a a**0.5 2、一樣大小數組之間的運算 a+b a/b a**b 3、數組的索引: 一維數組:a[5] 多維數組: 列表式寫法:a[2][3] 新式寫法:a[2,3] (推薦) 數組的切片: 一維數組:a[5:8] a[4:] a[2:10] = 1 多維數組:a[1:2, 3:4] a[:,3:5] a[:,1] 4、強調:與列表不一樣,數組切片時並不會自動複製,在切片數組上的修改會影響原數組。 【解決方法:copy()】
1 . 索引
一維與列表徹底一致 , 多維同理
2 . 切片
1) . 一維與列表徹底相同 , 多維同理
2) . 將數據進行反轉 , 例如 : [1,2,3] --> [3,2,1]
3) . 對圖片進行操做
3 . 變形
使用 reshape()函數,注意一個參數是 --- tuple !
4 . 級聯
np.concatenate()
級聯須要注意的點:
- 級聯的參數是列表:必定要加中括號或小括號
- 維度必須相同
- 形狀相符:在維度保持一致的前提下,若是進行橫向(axis=1)級聯,必須保證進行級聯的數組行數保持一致。若是進行縱向(axis=0)級聯,必須保證進行級聯的數組列數保持一致。
- 可經過axis參數改變級聯的方向
5 . 切割
給圖片進行切割
原圖片 :
五 . 數學和統計方法
經常使用函數: sum 求和 cumsum 求前綴和 mean 求平均數 std 求標準差 var 求方差 min 求最小值 max 求最大值 argmin 求最小值索引 argmax 求最大值索引
六 . ndarray的排序
np.sort() 和 ndarray.sort() 的區別 :
- np.sort() 不改變輸入
- ndarray.sort() 本地處理,不佔用空間,但改輸入
七 . 隨機數生成
隨機數生成函數在np.random子包內
經常使用函數 :
- rand 給定形狀產生隨機數組(0到1之間的數)
- randint 給定形狀產生隨機整數
- choice 給定形狀產生隨機選擇
- shuffle 與random.shuffle相同
- uniform 給定形狀產生隨機數組