2_numpy_數組的創建與轉換

ndarray數組的創建與轉換

原文檔

  1. ndarray數組的創建

    1. 方法1

      x = np.array(list/tuple)
      x = np.array(list/tuple, dtype=np.float32)
      

      不指定參數dtype時,numpy將根據數據的情況關聯一個dtype類型

      從python中的列表元祖創建

       a = np.array([1, 2, 3])
       print(a)#[1 2 3]
       
       # 從元祖類型創建
       b = np.array((1, 2, 3))
       print(b)#[1 2 3]
       
       # 從列表和元祖的混合類型創建
       c = np.array([[1, 2], [2, 3, 4], (1, 2, 3)])
       
       print(c)#[list([1, 2]) list([2, 3, 4]) (1, 2, 3)]
      
    2. 方法2

      使用numpy中函數創建ndarray數組,如:arange, ones, zeros等

      • 使用np.arange(n)函數創建,類似ndarray類型,元素從0到n-1

          a = np.arange(10)
          print(a)  # [0 1 2 3 4 5 6 7 8 9]
        
      • 使用np.ones(shape)函數:根據shape生成一個元素全爲1的數組,shape是元祖類型
        沒有指定dtype,默認爲浮點型

         #   創建一個2行4列的ndarray
         a = np.ones((2, 4))
         print(a)
         
         [[1. 1. 1. 1.]
         [1. 1. 1. 1.]]
         
         # 創建一個多維數組,可以理解爲2個3行4列的數組
         a = np.ones((2, 3, 4), dtype=np.int64)
         print(a)
         
         [[[1 1 1 1]
           [1 1 1 1]
           [1 1 1 1]]
        
      • 使用np.zeros(shape)函數:根據shape生成一個元素全爲0的數組,shape是元祖類型
        沒有指定dtype,默認爲浮點型

         a = np.zeros((2, 4))
         print(a)
         
         [[0. 0. 0. 0.]
         [0. 0. 0. 0.]]
        
      • 使用np.full(shape,val)函數:根據shape生成一個數組,每個元素值均爲val,shape是元祖類型
        創建一個3行4列值全爲2的ndarray

         a = np.full((3, 4), 2)
         print(a)
         
         [[2 2 2 2]
          [2 2 2 2]
          [2 2 2 2]]
        
      • 使用np.eye(n)函數:創建一個正方形的n*n單位矩陣,

         a = np.eye(4)
         print(a)
         
         [[1. 0. 0. 0.]
          [0. 1. 0. 0.]
          [0. 0. 1. 0.]
          [0. 0. 0. 1.]]
        

      拓展:

      • np.ones_like(a) :根據數組a的形狀生成一個元素全爲1的數組;

      • np.zeros_like(a) :根據數組a的形狀生成一個元素全爲0的數組;

      • np.full_like(a,val) :根據數組a的形狀生成一個元素全爲val的數組;

    3. 方法3,使用numpy其它的一些方法,例如linspace,concatenate

      1. np.linspace() : 根據起止數據等間距地填充數據,形成數組

          a = np.linspace(2, 8, 3, dtype=np.int32)
          print(a)  # [2 5 8]
        
      2. 合併兩個或多個數組

          c = np.concatenate((np.array([1, 2]), np.array([2, 3])))
          print(c)  # [1 2 2 3]
        
  2. 數組的轉換

    1. 維度轉換

      • reshape(shape):不改變數組元素,返回一個shape形狀的數組,原數組不變。

          a = np.zeros((2, 4))
          print(a)
          """
          [[0. 0. 0. 0.]
           [0. 0. 0. 0.]]
          """
          b = a.reshape((1, 8))
          print(b)
          """
          [[0. 0. 0. 0. 0. 0. 0. 0.]]
          """
          # shape是變的,size是不變的,也就是2×4 = 1*8,否則報錯
        
      • resize(shape):不改變數組元素,不返回一個shape形狀的數組,而且原數組元素改變。

          a = np.full((2,3),5)
          print(a)
          """
          [[5 5 5]
           [5 5 5]]
          """
          a.resize((2,8))
          print(a)
          """
          [[5 5 5 5 5 5 0 0]
           [0 0 0 0 0 0 0 0]]
          """
        
      • flatten():對數組進行降維,返回摺疊後的一維數組,原數組不變

          a=np.eye(4)
          print(a)
          print(a.flatten())
        
    2. 類型轉換

      • 元素類型的變換:

          a = np.ones((1, 2), dtype=np.int)
          print(a)  # [[1 1]]
          print(a.astype(np.float))  # [[1. 1.]]
        
      • 數組向列表的轉換:

          a = np.full((2, 3), 10)
          print(a)
          """
          [[10 10 10]
          [10 10 10]]
          """
          print(a.tolist())
          """
          [[10, 10, 10], [10, 10, 10]]
          """
        
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章