python資料科學--numpy入門
阿新 • • 發佈:2018-11-19
numpy庫是python中用於科學計算的核心庫,它提供了一個高效能的多維陣列物件,以及用於處理這些陣列的工具。
匯入numpy模組
import numpy as np
建立陣列
a=np.array([1,2,3]) #建立一維陣列
b=np.array([(1.5,2,3),(4,5,6)],dtype=float) #建立二維陣列
c=np.array([[(1.5,2,3),(4,5,6)],[(3,2,1),(4,5,6)]],dtype=float) #建立三維陣列
初始方法
np.zeros((3,4)) #建立一個3x4的0陣列 np.ones((2,3,4),dtype=np.int16) #建立兩個3x4的1陣列 d=np.arange(10,25,5) #建立一個值在10~25以內,間隔為5的一維陣列 np.linspace(0,2,9) #建立一個值在0~2以內,長度為9的一維陣列 e=np.full((2,2),7) #建立一個值都為7的2x2二維陣列 f=np.eye(2) #建立一個2x2單位矩陣 np.random.random((2,2)) #建立具有隨機值的陣列 np.empty((3,2)) #建立空陣列
I/O:磁碟上的儲存和載入
np.save('my_array',a)
np.savez('my_array.npz',a,b)
np.load('my_array.npy')
I/O:儲存和載入文字檔案
np.loadtxt('myfile.txt')
np.genfromtxt('my_file.csv',delimiter=',')
np.savetxt('myarray.txt',a,delimiter=' ')
資料型別:
np.int64 #整型 np.float32 #浮點型 np.complex #複數 np.bool #布林值 np.object #物件 np.string_ #ASCLL字元 np.unicode_ #Unicode所有字元,位元組數由平臺決定
檢視陣列:
a.shape #軸 檢視陣列形狀,對於矩陣,n行m列
len(a) #陣列長度
a.ndim #迭 陣列維數
a.size #陣列元素數,行*列
b.dtype #陣列資料型別
b.dtype.name #陣列資料型別名稱
b.astype(int) #轉換陣列為不同資料型別
幫助程式碼
np.info(np.ndarray.dtype)
陣列數學運算
np.subtract(a,b) #陣列相減a-b np.add(b,a) #陣列相加b+a np.divide(a,b) #陣列相除a/b np.multiply(a,b) #陣列 np.exp(b) #計算陣列各元素的指數值 np.sqrt(b) #計算陣列各元素的平方根 np.sin(a) #計算陣列各元素的三角函式值 np.cos(b) np.log(a) #計算陣列各元素的自然對數 e.dot(f) #數量積
比較
a==b #兩個陣列之間進行比較,相同位置元素值相同標明true,否則false
a<2 #a陣列元素值小於2的元素標明為true,否則false
np.array_equal(a,b) #
聚合函式
a.sum() #求和陣列a各元素的總和
a.min() #陣列a最小值
b.max(axis=0) #陣列b最大值,axis=0為列,1為行
b.cumsum(axis=1) #累加,cumsum和cumprod之類的方法不聚合,產生一箇中間結果組成的陣列,預設一維陣列,1為按原樣
b.cumprod() #累乘
a.mean() #平均數
a.median() #中位數
a.corrcoef() #
np.std(b) #標準差:方差平方根
複製函式
h=a.view() #用相同的資料建立陣列的檢視
np.copy(a) #建立陣列的副本
h=a.copy() #建立陣列的深度副本
陣列排序
a.sort() #從小到大排序
a.sort(axis=0) #從小到大對列排序 axis=0為列,1為行
陣列處理
- 轉置陣列
i=np.transpose(b) #
i.T #矩陣轉置, 行變列, 列變行, 對角線翻轉矩陣
- 改變陣列形狀
b.ravel() #使陣列變平,多維陣列轉為一維陣列
b.reshape(3,-2) #重塑,但不要改變資料
- 新增/移除元素
h.resize((2,6)) #返回具有行列的新陣列(2,6)
np.append(h,g) #將資料追加到陣列中
np.insert(a,1,5) #將陣列插入到陣列中
np.delete(a,[1]) #從陣列中刪除資料
- 組合陣列
np.concatenate((a,b),axis=0) #級聯陣列
np.vstack((a,b)) #垂直堆疊陣列(行)
np.r_[a,b] #垂直堆疊陣列(行)
np.hstack((a,b)) #水平堆疊陣列(列)
np.column_stack((a,b)) #建立堆疊列陣列
np.c_[a,b] #建立堆疊列陣列
- 拆分陣列
np.hsplit(a,3) #在第三個索引中水平地拆分陣列a
np.vsplit(a,2) #在第二個索引上垂直地拆分陣列a