天天看點

【python機器學習】常用庫之科學計算包Numpy     科學計算包(Numpy)

        經過不斷的使用與進化,Python産生了不少專門用于機器學習的程式庫,我們在機器學習中經常需要用到的一些程式庫,包括科學計算包(Numpy)、資料分析工具(Pandas)、數值計算包(Scipy)、繪圖工具庫(Matplotlib)、機器學習包(Scikit-learn)等,涵蓋了在機器學習中資料導入、整理、資料處理、可視化、數值計算以及算法運作等方面。 通過掌握以上基本的程式庫的應用,可以極大簡化對資料的處理過程。

     科學計算包(Numpy)

       Numpy的核心是數組(Arrays),具體來說是多元數組(Ndarrays);Numpy就是對這些數組進行建立、删除、運算等操作的一個程式包。

       數組即一組資料,它把一系列具有相同類型的資料組織在一起,成為一個可操作的整體,但是兩個數組内部的資料類型是不同的。

       Numpy的一個特點是把資料轉換成數組(向量或矩陣)形式處理或運算。

1、建立數組

np.array( )          建立數組       

np.arange( )       建立等差數列

np.linspace( )     建立指定範圍内均勻分布的數組

np.ones( )           建立元素都是1的數組

np.zeros( )          建立元素都是0的數組

np.eye( )             建立對角矩陣

np.random.random( )               建立随機數組  

2、檢視數組的屬性

.shape              數組的次元

.dtype               數組的資料類型

.size                 數組的元素個數

3、數組索引

arr[3]                擷取數組中某個元素

arr[3:5]             切片

4、數組的統計分析

np.sort() 函數           對數組進行排序

np.sum()函數           對數組進行求和

np.mean()函數         對數組求均值

np.std()函數             對數組求标準差

5、數組的矩陣操作

np.mat("1 3 4;5 7 9; 3 5 6")      mat()函數建立矩陣

np.dot(arr,arr1)                         dot( )函數進行矩陣相乘

  • 建立數組np.array

    import numpy as np          #導入Numpy庫
    array=np.array([1,2,3,4])   #建立一維數組
    print(array)                #列印數組
    array2=np.array([[2,4,6,7],[3,9,7,0],[2,8,5,9]])       #建立二維數組
    print(array2)                                          #列印數組
               
    [1 2 3 4]
    
    [[2 4 6 7]
     [3 9 7 0]
     [2 8 5 9]]
               
  •  檢視array數組的屬性

    print('數組次元為:',array2.shape)              #檢視數組結構
    print('數組的資料類型為:',array2.dtype)         #檢視數組的資料類型
    print('數組元素個數為:',array2.size)            #檢視數組元素個數
               
    數組次元為: (3, 4)
    數組的資料類型為: int32
    數組元素個數為: 12
               
  • 建立數組的其他方式

    print(np.arange(8))        #np.arange()建立等差數列
    print(np.linspace(0,6,4))  #np.linspace()指定範圍内均勻分布的數組
    print(np.zeros((2,3)))     #np.zeros()元素都是0的數組,2x3的矩陣
    print(np.ones((2,8)))      #np.ones()元素都是1的數組,2x8的矩陣
    print(np.eye(3))           #建立對角矩陣
    print(np.random.random(8)) #建立元素數為8的随機數組
               
    [0 1 2 3 4 5 6 7]
    
    [0. 2. 4. 6.]
    
    [[0. 0. 0.]
     [0. 0. 0.]]
    
    [[1. 1. 1. 1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1. 1. 1. 1.]]
    
    [[1. 0. 0.]
     [0. 1. 0.]
     [0. 0. 1.]]
    
    [0.88169518 0.48534047 0.03996798 0.86128575 0.58678112 0.48859591 0.5996858  0.7072107 ]
               
  • 基礎的資料運算

    arr=np.array(np.arange(10))     #建立0-9之間的等差資料
    arr1=np.array(np.arange(1,11))  #建立1-10之間的等差資料
    print(arr*2)                     #數組乘法
    print(arr+arr1)                  #數組加法
               
    [ 0  2  4  6  8 10 12 14 16 18]
    [ 1  3  5  7  9 11 13 15 17 19]
               
  • 數組索引

    arr=np.arange(10)
    print(arr[6])            #擷取數組中的第6個數
    print(arr[2:5])          #擷取某個範圍的元素,第3、4、5個元素
    arr[3:5]=111,112         #改變第4個元素為111,第5個元素為112
    print(arr)
    arr1=np.array([[1,2,3,4],[1,4,5,6],[3,5,6,7]])   #建立多元數組
    print(arr1)
    print(arr1[0,1:3])
               
    6
    
    [2 3 4]
    
    [  0   1   2 111 112   5   6   7   8   9]
    
    [[1 2 3 4]
     [1 4 5 6]
     [3 5 6 7]]
    
    [2 3]
               
  • 數組的統計分析

    arr=np.array([2,5,6,8,3])
    print(arr)
    print(np.sort(arr))         #sort()函數對數組進行排序
    print(np.sum(arr))          #sum()函數對數組進行求和
    print(np.mean(arr))         #mean()函數對數組求均值
    print(np.std(arr))          #std()函數對數組求标準差
               
    [2 5 6 8 3]
    [2 3 5 6 8]
    24
    4.8
    2.1354156504062622
               
  • 數組的矩陣操作

    arr=np.arange(3)
    matr1=np.mat("1 4 5;3 5 6;3 7 9")     #使用mat()函數建立矩陣
    print(arr)
    print(matr1)
    print(np.dot(arr,matr1))              #使用dot()函數進行arr和matr1矩陣之間的相乘
               
    [0 1 2]
    
    [[1 4 5]
     [3 5 6]
     [3 7 9]]
    
    [[ 9 19 24]]
               

繼續閱讀