3_numpy_數組的操作和運算

numpy數組的操作和運算

原文檔

  1. 數組的索引和切片

    • numpy數組也可以切片和索引

      a = np.array([1, 2, 3, 4, 5, 6, 7, 8])
      # 索引
      print(a[0])  # 1
      # 切片
      print(a[0:-1:2])  # [1 3 5 7]
      
    • 多維數組的索引

      # 索引:每個維度一個索引值,逗號分割
      a = np.arange(0, 20).reshape(2, 2, 5)
      print(a)
      """
      [[[ 0  1  2  3  4]
        [ 5  6  7  8  9]]
      
       [[10 11 12 13 14]
        [15 16 17 18 19]]]
      """
      # 取元素19
      print(a[1, 1, -1])  # 19
      # 取元素7
      print(a[0, 1, 2])
      
    • 多維數組的切片

      # 切片
      a = np.arange(0, 20).reshape(2, 2, 5)
      print(a)
      """
      [[[ 0  1  2  3  4]
        [ 5  6  7  8  9]]
      
       [[10 11 12 13 14]
        [15 16 17 18 19]]]
      
      """
      # 切片取7到9個元素
      print(a[0, 1, 2:])#[7 8 9]
      # 切片取7,8,17,18四個元素
      print(a[:, 1, 2:4])
      """
      [[ 7  8]
       [17 18]]
      """
      # 切片取7,9兩個元素
      print(a[0, 1, 2::2])
      #[7 9]
      
  2. ndarray數組的運算

    • 數組與標量之間的運算:數組與標量之間的運算作用於數組的每一個元素

      a = np.arange(24).reshape((2, 3, 4))
      print(a)
      """
      [[[ 0  1  2  3]
        [ 4  5  6  7]
        [ 8  9 10 11]]
      
       [[12 13 14 15]
        [16 17 18 19]
        [20 21 22 23]]]
      """
      # 求數組a的平均值即求數組a內元素的平均值:
      print(a.mean())  # 11.5
      # 計算a與元素平均值的商:
      a = a / a.mean()
      print(a)
      """
      [[[0.         0.08695652 0.17391304 0.26086957]
        [0.34782609 0.43478261 0.52173913 0.60869565]
        [0.69565217 0.7826087  0.86956522 0.95652174]]
      
       [[1.04347826 1.13043478 1.2173913  1.30434783]
        [1.39130435 1.47826087 1.56521739 1.65217391]
        [1.73913043 1.82608696 1.91304348 2.        ]]]
      """
      
    • numpy的一元函數

      • np.abs(x)或np.fabs(x) :  計算數組各元素的絕對值

      • np.sqrt(x):計算數組各元素的平方根

      • np.square(x): 計算數組各元素的平方

      • np.log(x)   np.log10(x)  np.log2(x)  :  分別表示數組各元素的自然對數、以10爲底的對數、以2爲底的對數

      • np.ceil(x)  np.floor(x)  :   ceil中文爲天花板,即朝正無窮大方向取整;floor中文爲地板,即朝負無窮大方向取整

        舉例

        a = np.array([0.2, 0.8, 1.2])
        print(np.ceil(a))  # [1. 1. 2.]
        
      • np.rint(x) : 計算數組各元素的四捨五入值

      • np.modf(x) : 將數組各元素的小數和整數部分以兩個獨立數組形式返回

      • np.cos(x)  np.cosh(x)  np.sin(x)  np.sinh(x)  np.tan(x)  np.tanh(x)  :  計算數組各元素的普通型和雙曲型三角函數

      • np.exp(x) :計算數組各元素的指數值

      • np.sign(x) :計算數組各元素的符號值,1(+),0,-1(-)

        a = np.array([2, 3, -4, 5])
        print(np.sign(a))  # [ 1  1 -1  1]
        print(np.modf(a))  # (array([ 0.,  0., -0.,  0.]), array([ 2.,  3., -4.,  5.]))
        print(np.square(a))  # [ 4  9 16 25]
        
    • 二元函數

      • + - * /  **   :    兩個數組各元素進行對應運算

      • np.maximun(x,y) 或np.fmax() :  元素級的最大值

      • np.minimun(x,y) 或np.fmin() :   元素級的最小值

      • np.mod(x, y) :  元素級的模運算

      • np.copysign(x, y) :  將數組y中各元素值的符號賦值給數組x對應的元素

      • >  <  >=  <=  ==  !=   :   算術比較,產生布爾型數組

        a = np.arange(24).reshape((2, 3, 4))
        print(a)
        """
        [[[ 0  1  2  3]
          [ 4  5  6  7]
          [ 8  9 10 11]]
        
         [[12 13 14 15]
          [16 17 18 19]
          [20 21 22 23]]]
        """
        b = np.arange(-12, 12).reshape((2, 3, 4))
        print(b)
        """
        [[[-12 -11 -10  -9]
          [ -8  -7  -6  -5]
          [ -4  -3  -2  -1]]
        
         [[  0   1   2   3]
          [  4   5   6   7]
          [  8   9  10  11]]]
        """
        print(np.maximum(a, b))
        """
        [[[ 0  1  2  3]
          [ 4  5  6  7]
          [ 8  9 10 11]]
        
         [[12 13 14 15]
          [16 17 18 19]
          [20 21 22 23]]]
        """
        
        print(a+b)
        """
        [[[-12 -10  -8  -6]
          [ -4  -2   0   2]
          [  4   6   8  10]]
        
         [[ 12  14  16  18]
          [ 20  22  24  26]
          [ 28  30  32  34]]]
        """
        
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章