5_numpy_隨機數函數,統計函數,梯度函數

numpy的隨機數函數,numpy的統計函數,numpy的梯度函數

原文檔

  1. numpy的隨機數函數

    numpy的random子庫:np.random.*,主要有np.random.rand() np.random.randn() np.random.randint()

    • rand(d0,d1,d2,……,dn) : 根據d0-dn創建隨機數組,浮點數,範圍是[0,1),均勻分佈

        a = np.random.rand(2, 3, 4)
        print(a)
        """
        [[[0.4506612  0.5296636  0.9747625  0.90105177]
          [0.25850117 0.90704491 0.87144252 0.00418912]
          [0.69423447 0.690204   0.4432447  0.37734196]]
        
         [[0.41056822 0.4220897  0.80819521 0.99022746]
          [0.61803924 0.93554027 0.3742707  0.94081985]
          [0.15283965 0.09844152 0.25726209 0.24488101]]]
        """
      
    • randn(d0,d1,d2,……,dn) : 根據d0-dn創建隨機數組,標準正態分佈

        a = np.random.randn(2, 3, 4)
        print(a)
        """
         [[0.40633254 0.47173819 0.38729304 0.70714334]
          [0.46251671 0.07390322 0.57785243 0.2053207 ]
          [0.48132709 0.84742941 0.8197048  0.47963288]]]
        """
      
    • randint(low, high, shape) : 根據shape創建隨機數數組,範圍是[low, high)

        a = np.random.randint(5, 10, (2, 3, 4))
        print(a)
        """
        [[[5 6 5 7]
          [7 5 9 5]
          [6 7 6 5]]
        
         [[8 6 7 5]
          [6 8 5 6]
          [8 8 7 9]]]
        """
      
    • seed(s) : 隨機數種子,s是給定的種子值

        np.random.seed(5)
        a = np.random.randint(5, 10, (2, 3, 4))
        print(a)
        """
        [[[8 5 6 5]
          [9 8 5 5]
          [9 6 5 8]]
        
         [[9 8 6 9]
          [7 6 6 7]
          [6 6 6 7]]]
        """
        # 運行兩次結果不變
        #當給定的種子值爲4時,數組的值並不會改變
      
    • shuffle(a): 根據數組a的每一縱列進行隨機排列,數組a發生改變

        a = np.random.randint(5, 10, (3, 4))
        print(a)
        """
        [[[6 8 7 8]
          [9 7 7 9]
          [5 6 6 8]]
        
         [[6 6 5 6]
          [5 7 5 5]
          [6 8 5 9]]]
        """
        np.random.shuffle(a)
        print(a)
        """
        [[8 7 8 7]
         [5 6 5 8]
         [7 9 5 5]]
        [[5 6 5 8]
         [8 7 8 7]
         [7 9 5 5]]
        """
      
    • permutation(a) :根據數組a的每一縱列進行隨機排列,數組a不改變

       a = np.random.randint(5, 10, (3, 4))
       print(a)
       """
       [[8 7 5 9]
        [5 9 8 6]
        [6 6 5 5]]
       """
       b = np.random.permutation(a)
       print(a)
       """
       [[9 5 7 9]
        [5 9 5 7]
        [6 8 6 7]]
       """
       print(b)
       """
       [[5 9 5 7]
        [6 8 6 7]
        [9 5 7 9]]
       """
      
    • choice(a, size, replace, p):從一維數組a中以概率p抽取元素,形成size形狀的新數組,replace表示是否可以重用元素,默認爲True

        a = np.arange(6)
        
        print(np.random.choice(a, 2, replace=False, p=a / np.sum(a)))
        #[2 5]
        # replace在一維數組中有效
      
      • uniform(low, high, size)  : 產生具有均勻分佈的數組,low起始值,high結束值,size形狀

      • normal(loc,scale,size)   :  產生具有正態分佈的數組,loc均值,scale標準差,size形狀

      • poisson(lam,size)  :   產生具有泊松分佈的數組,lam隨機事件發生率,size形狀

  2. numpy的統計函數

    • np.sum(a, axis=None) : 根據給定軸axis計算數組a相關元素之和,axis整數或元組。

        a = np.arange(15).reshape((3, 5))
        print(a)
        """
        [[ 0  1  2  3  4]
         [ 5  6  7  8  9]
         [10 11 12 13 14]]
        """
        print(np.sum(a, axis=0))
        # [15 18 21 24 27]
        print(np.sum(a, axis=1))
        # [10 35 60]
      

      當axis=None時,np.sum(a)表示數組a的所有元素總和

      當axis=0時,表示的是數組a各縱列元素之和

      當axis=1時,表示的是數組a各橫列元素之和

    • mean(a, axis=None) :根據給定軸axis計算數組a相關元素的期望,axis整數或元組

        a = np.arange(15).reshape((3, 5))
        # mean 求取均值
        print(np.mean(a))#7.0
        print(np.mean(a, axis=0))#[5. 6. 7. 8. 9.]
      
    • average(a,axis=None,weights=None):根據給定軸axis計算數組a相關元素的加權平均值

        print(np.average(a, axis=0, weights=[2, 3, 4]))
        # [ 6.11111111  7.11111111  8.11111111  9.11111111 10.11111111]
        # 6.111111111111111是這樣計算出來的: (0 * 2 + 5 * 3 + 4 * 10) / (2 + 3 + 4)
      
      • std(a, axis=None) : 根據給定軸axis計算數組a相關元素的標準差

      • var(a, axis=None) :  根據給定軸axis計算數組a相關元素的方差

      • min(a)  max(a) :  計算數組a中元素的最小值、最大值

      • argmin(a)  argmax(a) :  計算數組a中元素最小值、最大值的降一維後下標

      • unravel_index(index, shape) :  根據shape將一維下標index轉換成多維下標

      • ptp(a) :  計算數組a中元素最大值與最小值的差

      • median(a)  :   計算數組a中元素的中位數(中值)

  3. numpy的梯度函數

    np.gradient(a) :計算數組a中元素的梯度,當a爲多維時,返回每個維度梯度

    梯度:連續值之間的變化率,即斜率

    XY座標軸連續三個X座標對應的Y軸值:a, b, c,其中,b的梯度是: (c‐a)/2

    當a爲一維數組時,

     a = np.random.randint(0, 20, (5))
     print(a)
     # [ 5  5 13  6 10]
     print(np.gradient(a))
     # [ 0.   4.   0.5 -1.5  4. ]
     #  0 : (5-5)/1
     #  4. : (10-6)/1
     #  0.5: (6-5)/2
     #  4. : (13-5)/2
    

    當a爲多維數組時

     a = np.arange(12).reshape(2,6)
     print(a)
     """
     [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]]
     """
     print(np.gradient(a))
     """
     [array([[6., 6., 6., 6., 6., 6.],
        [6., 6., 6., 6., 6., 6.]]), array([[1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.]])]
     """
     # 上側表示最外層維度(axis=0)的梯度,下側表示第二層維度(axis=1)的梯度。
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章