1.NumPy:
是Python的一個開源的數值計算庫。可以用來存儲和處理大型矩陣,比python自身的嵌套列表結構要高效,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫,包括數學、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅里葉變換、基本線性函數,基本統計運算和隨機模擬等。
2.Jupyter NoteBook
Web應用程序,用途是數據清理和轉換,數值模擬,統計建模,機器學習等
運行外部python文件:
%run *.py
計算statement運行時間:
%time statement??????????????? 一般用于耗時比較長的代碼
%timeit statement????????????????? 會多次運行statement,得到一個更精準的時間,一般用于耗時較短的
返回當前會話的所有變量和函數名稱:
%who_ls
3.Numpy數組:
1.使用np.array()創建
numpy默認ndarray的所有元素類型都是相同的,如果傳進來的列表包含不同的類型,則統一為同一類型,優先級str>float>int
ndarray的常見數據類型:int、float、str
2.使用np的routines函數創建
- 創建一個所有元素都為一的多維數組:np.ones(shape,dtype=None,order='C')
shape:形狀
dtype=None:元素類型
order:{'C','F'},默認值為C,C(行主序),F(列主序)
- 創建一個所有元素都為0的多維數組:np.zeros(shape,dtype=None,order='C')
dtype默認值為float
- 創建一個所有元素都為指定元素的多維數組:np.full(shape,fill_value,dtype=None,order='C')
shape:形狀
fill_value:填充值
dtype=None:元素類型
order:{'C','F'},默認值為C,C(行主序),F(列主序)
- 創建一個對角線為1其他位置為0的二維數組:np.eye(N,M=None,k=0,dtype=None)
N:行數
M:列數,默認為None,表示和行數一樣
k=0:向右偏移0個位置
dtype默認值為float
- 創建一個等差數列:np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
start:開始值
stop:結束值
num=50:等差數列中默認有50個數
endpoint=True:是否包含結束值
retstep=Flase:是否返回等差值
dtype=None:元素類型
- 創建一個數值范圍的數組(和python的range類似): np.arange(start,stop,step,dtype=None)
start:開始值
stop:結束值
step:步長
dtype=None:元素類型
- 創建一個隨機整數的多維數組:np.random.randint(low,high=None,size=None,dtype='l')
low:最小值
high:最大值
- high=None時,生成的數值在[0,low]區間
size=None,數組形狀,默認只輸出一個隨機值
dtype=None:元素類型
- 創建一個都為1的服從標準正態分布的多維數組:np.random.randn(d0,d1,…,dn)
dn:第n個維度的數值
- 創建一個服從正態分布的多維數組:np.random.normal(loc=0.0,scale=0.0,size=None)
loc=0.0:均值,對應正態分布的多維數組
scale:標準差,對應分布的寬度,scale越大,正態分布的曲線越矮胖,scale越小,曲線越高瘦
size=None:數組形狀
- 創建一個元素為 [ 0,1 )的隨機數的多維數組:np.random.random(size=None)
size=None:數組形狀
- 創建一個元素為 [ 0,1 )的隨機數的多維數組:np.random.rand(),與np.random.random(size=None)類似:
dn:第n個維度的數值
4.ndarray屬性:
ndim:維度
shape:形狀(有幾個數字就表示幾維)
size:總數據數量
dtype:元素類型
5.索引:
一維與列表完全一致,多維時同理,可通過索引修改數組
6.切片:
一維與列表一致,多維同理。
翻轉:
二維數組行操作:
二維數組取單行:
二維數組取連續多行:
取不連續多行:
二維數組列操作:
二維數組取單列:
二維數組取連續多列:
取不連續多列:
7.數組變形reshape
-1表示任意剩余維度的長度:
8.級聯:np.concatenate()
參數是列表或元組
級聯的數組為度必須相同,
可以通過axis參數改變聯的方向,axis=0:第一個維度,axis:第二個維度…..
水平級聯:
np.hstack()
垂直級聯:
np.vstack()
9.拆分:
垂直拆分:np.vsplit()
按照指定位置拆分
水平拆分:np.hsplit()
水平或垂直拆分:split() (axis=0行,axis=1列)
10.數組拷貝:
copy()創建副本
11.聚合操作:
- 求和:np.sum
- np.max():最大值
- np.min():最小值
- np.mean():平均值
- np.average():平均值
- np.median():中位數
- np.percentile(n,q=50):百分位數,q=50代表中位數
- np.argmax():第一個最大值對應下標
- np.argmin():第一個最小值對應的下標
- np.power(n,3):次方,此處為3次方
- np.std():標準差
- np.var():方差
- np.nansum():排Nan值求和
12.矩陣操作
基本矩陣操作:
算術運算符:加減乘除、整除(//)、次方(**)、余數(%)
矩陣和矩陣之間運算
數與矩陣運算
矩陣乘積:
矩陣與矩陣相乘,np.dot
矩陣逆運算:np.linalg.inv()
矩陣行列式:np.linalg.det()
矩陣秩:np.linalg.maxtrix_rank(n)
廣播機制:
為不同維度的矩陣盡量提供運算的可能性
規則一:為缺失的維度補維度
規則二:缺失元素用已有值填充
其他數學操作:
np.abs():絕對值
np.sqrt():平方根
np.square():平方
np.exp():指數e
np.log():自然對數,以e為底的對數
np.sin():正弦
np.cos():余弦
np.tan():正切
np.round():四舍五入?? eg:np.round(n,2)小數點2位四舍五入
np.ceil():向上取整
np.floor():向下取整
np.cumsum():累加
13.排序操作:
np.sort():不改變輸入排序
ndarray().sort():本地處理,不占用空間,但是改變輸入
14.文件操作:
np.save():保存ndarray到一個npy文件
np.savez():將多個ndarray到一個npz文件中
np.savetxt():保存到csv或txt中
np.load():讀取文件