1. 程式人生 > >python資料科學--numpy入門

python資料科學--numpy入門

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