數據分析:是把隱藏在一些看似雜亂無章的數據背後的信息提煉出來,總結出所研究對象的內在規律python
數據分析的三劍客 : Numpy ,Pandas ,Matplotlib數組
一.Numpydom
Numpy(Mumerical python)是python語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。函數
1.建立ndarraylua
使用np.array()建立spa
一維數據建立code
import numpy as np np.array([1,2,3,4,5])
二維數組建立對象
import numpy as np np.array([[1,2,3],['a','b',1.1]])
注意:blog
numpy默認ndarray的全部元素的類型是相同的排序
若是傳進來的列表中包含不一樣的類型,則統一爲同一類型,優先級:str>float>int
操做該numpy數據,該操做會同步到圖片中
import matplotlib.pyplot as plt img_arr = plt.imread('./bobo.jpg') plt.imshow(img_arr)
plt.imshow(img_arr - 66)
2.使用np的routines函數建立
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差數列
np.linspace(1,100,num=50)
np.arange([start, ]stop, [step, ]dtype=None)
np.arange(1,100,2)
np.random.randint(low, high=None, size=None, dtype='l')
np.random.seed(10)
arr = np.random.randint(0,100,size=(5,6))
np.random.random(size=None) 生成0到1的隨機數,左閉右開 np.random.seed(3)
np.random.random(size=(3,3))
二.ndarray的屬性
參數: ndim-->維度 shape --> 形狀(各類維度的長度) size --> 總長度 dtype-->元素類型
img_arr.shape
img_arr.ndim
img_arr.size
img_arr.dtype
type(img_arr)
三.ndarray的基本操做
1.索引
一維與列表徹底一致 多維時同理
np.random.seed(10) arr = np.random.randint(0,100,size=(5,6)) arr
根據索引修改數據
arr[[1,2]]
2.切片
一維與列表徹底一致 多維時同理
np.random.seed(10) arr = np.random.randint(0,100,size=(5,6)) arr
獲取二維數組前兩行
arr[0:2]
獲取二維數組前兩列
arr[:,0:2]
獲取二維數組前兩行和前兩列
arr[0:2,0:2]
將數據反轉, :: 進行切片
將數組的行倒序
#將數組的行倒序 arr[::-1] #列倒序 arr[:,::-1] #所有倒序 arr[::-1,::-1]
將圖片進行所有倒置操做
plt.imshow(img_arr) plt.imshow(img_arr[:,::-1,:]) plt.imshow(img_arr[::-1,::-1,::-1])
3.變形
使用arr.reshape()函數,注意參數是一個tuple
基本使用
將一維數組變造成多維數組
arr_1.reshape((-1,15))
將多維數組變造成一維數組
arr_1 = arr.reshape((30,))
4.級聯
np.concatenate()
一維,二維,多維數組的級聯,實際操做中級聯多二維數組
np.concatenate((arr,arr),axis=1)
arr1 = np.random.randint(0,100,size=(5,5))
np.concatenate((arr,arr1),axis=1)
合併兩張照片
img_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1) imgs = np.concatenate((img_3,img_3,img_3),axis=0) plt.imshow(imgs)
np.hstack與np.vstack
級聯須要注意的點:
級聯的參數是列表:必定要加中括號或小括號
維度必須相同
形狀相符:在維度保持一致的前提下,若是進行橫向(axis=1)級聯,必須保證進行級聯的數組行數保持一致。若是進行縱向(axis=0)級聯,必須保證進行級聯的數組列數保持一致。
可經過axis參數改變級聯的方向
切割
plt.imshow(np.split(img_arr,[400],axis=0)[0])
四.ndarray的聚合操做
1.求和np.sum
#求和np.sum arr.sum(axis=0) #最大最小值:np.max/ np.min arr.max() #平均值:np.mean() arr.mean()
其餘聚合操做
Function Name NaN-safe Version Description np.sum np.nansum Compute sum of elements np.prod np.nanprod Compute product of elements np.mean np.nanmean Compute mean of elements np.std np.nanstd Compute standard deviation np.var np.nanvar Compute variance np.min np.nanmin Find minimum value np.max np.nanmax Find maximum value np.argmin np.nanargmin Find index of minimum value np.argmax np.nanargmax Find index of maximum value np.median np.nanmedian Compute median of elements np.percentile np.nanpercentile Compute rank-based statistics of elements np.any N/A Evaluate whether any elements are true np.all N/A Evaluate whether all elements are true np.power 冪運算
五.ndarray的排序
1.快速排序
np.sort()與ndarray.sort()均可以,但有區別:
np.sort()不改變輸入
ndarray.sort()本地處理,不佔用空間,但改變輸入
np.sort(arr,axis=0)