Python資料分析入門:Numpy庫講解
前言
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。
作者 | 熊思
來源 | 優編少兒AI課堂
匯入Numpy庫
為了書寫方便,一般用別名np代替Numpy庫(如果安裝的是anaconda,Numpy庫是自帶的)
a = np.array([[1,2,3,4],[5,6,7,8]])
print(a)
常用函式
匯入Numpy庫之後,可以用Numpy生成陣列。使用array()函式可以生成一個數組,與列表的區別是沒有逗號:
a = np.array([[1,2,3,4],[5,6,7,8]])
print(a)
上方的程式碼將生成一個二維陣列,結果如圖:
如果想改變陣列的維度,獲取4行2列陣列,可以通過reshape()方法實現:
b = a.reshape((4,-1))
print(b)
reshape()中的引數(4,-1)表示將陣列轉換為4*X的新陣列,X等於陣列a中元素個數的1/4。引數-1是一種“懶人”方法,表示由Python通過行引數4自動計算出列數。
此外,預設是按照行優先改變資料維度,也可以設定引數order="F",按照列優先改變資料維度:
c = a.reshape((4,2), order="F")
print(c)
雖然陣列的維度沒有改變,但是元素對應的位置已經不同了。
想要提取陣列中的某些元素,可以使用切片的方式來提取。如提取第2行中的5和7:
d = c[1,:]
print(d)
獲取結果如圖:
當然,也可以使用切片的方法修改陣列中相應位置的數值,比如將陣列c中第二列的中間兩個數變為0,可以這樣操作:
c[1:3,1] = 0
print(c)
可以看出,逗號左邊表示行號,右邊表示列號,由此就能任意截選出我們需要的資料。
陣列不僅可以是二維的,也可以是多維的。下面生成一個三維陣列e:
e = np.array([c,c*2])
print(e)
陣列e是一個2*2*4的陣列,也就是說由2個2*4的矩陣構成。
Numpy中的linspace()函式可以在指定的兩個數之間生成固定數量的等間距(步長)陣列,如:
f = np.linspace(start=1,stop=12,num=5)
print(f)
上方程式碼生成一個從1到12的5個等間距的陣列。
如果想以指定的步長來生成一個向量,可以使用arange()方法,如從1開始,步長為3,生成小於等於12的向量:
g = np.arange(1,12,3)
print(g)
結果:[1 4 7 10]
使用
ones()函式可以生成全1陣列,如生成一個2*3的全1陣列:
h = np.ones((2,3))
print(h)
使用zeros()函式可以生成全0陣列,如生成一個2*3的全0陣列:
i = np.zeros((2,3))
print(i)
若想生成單位陣列(對角線為1,其餘全是0),可以使用eye()函式,如生成一個3*3的單位陣列:
j = np.eye(3)
print(j)
當然,也可以指定對角線的元素取值:
k = np.diag(np.arange(1,13,4))
print(k)
使用diag()函式可以得到一個數組的對角線元素,也可以獲取對角線的值:
l =np.diag(np.arange(1,26,3).reshape((3,3)))
print(l)
結果:[ 1 13 25 ]
Numpy中的Random模組是用來生成隨機數的有力工具,通過seek()方法能指定隨機數種子,保證生成的隨機數是可重複的。如要生成一個可重複的3*3隨機陣列,可以用如下方法:
np.random.seed(2)
m = np.random.randn(3, 3)
print(m)
當然,一些常用的統計函式也能實現,如均值用mean()方法:
n = np.arange(10)
print(n.mean())
標準差可以使用std()方法:
n = np.arange(10)
print(n.std())
陣列排序可以使用sort()方法,預設是每行自動排序:
p = np.sort([[2,5,3],[10,6,8]])
print(p)
陣列的百分位數可以用percentile()函式:
q = np.arange(10)
print(np.percentile(q, 50))
中位數用median()函式:
q = np.arange(10)
print(np.median(q))
當個數為偶數時,中位數是中間兩個數字之和除以2。
Numpy的計算方法還有很多,大家可以去網上查閱,這裡只說幾個常用的。
Numpy主要以陣列為操作物件,在生成和調整陣列方面優勢非常明顯。但直接觀察陣列卻不太方便,沒有序號、排列不齊等問題並不利於我們尋找資料規律,所以我們需要繼續學習。
PS:如有需要Python學習資料的小夥伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視訊、PDF檔案等