【问题标题】:How do I convert a Numpy array of dimensions (3, 2998, 2403) into (2998, 2403, 3)?如何将 Numpy 维度数组 (3, 2998, 2403) 转换为 (2998, 2403, 3)?
【发布时间】:2021-01-23 13:48:56
【问题描述】:

这是当前的形状(通道、高度、宽度),如何转换成通常的图像格式-(高度、宽度、通道)?

【问题讨论】:

    标签: python image-processing


    【解决方案1】:

    你可以使用np.transpose:

    final = np.transpose(final, (1, 2, 0))
    

    【讨论】:

      【解决方案2】:

      有两种方法: 要么你做

      final = final.reshape(2998, 2403, 3)
      

      或者你这样做:

      final = final.permute(1, 2, 0)
      

      【讨论】:

        【解决方案3】:

        您可以使用np.moveaxis(array, source, destination) 移动轴。这里源轴是0,目标轴是-1(最后一个)

        final = np.moveaxis(final,0,-1)
        

        【讨论】:

          【解决方案4】:

          另一种解决方案是 np.moveaxis,例如:

          import numpy as np
          
          if __name__ == "__main__":
              a = np.array([[[1,2,3,4],[4,5,6,7]],[[1,2,3,4],[4,5,6,7]],[[1,2,3,4],[4,5,6,7]]])
              print(a.shape)
              print(a)
              b = np.moveaxis(a,0, -1)
              print(b.shape)
              print(b)
          

          输出: 在 np.moveaxis 之前 (3, 2, 4) [[[1 2 3 4] [4 5 6 7]]

          [[1 2 3 4]
           [4 5 6 7]]
          
          [[1 2 3 4]
           [4 5 6 7]]]
          

          在 np.moveaxis 之后:

          (2, 4, 3)
          [[[1 1 1]
            [2 2 2]
            [3 3 3]
            [4 4 4]]
          
           [[4 4 4]
            [5 5 5]
            [6 6 6]
            [7 7 7]]]
          

          【讨论】:

            猜你喜欢
            • 2021-09-18
            • 2014-11-02
            • 2020-02-17
            • 2020-07-12
            • 1970-01-01
            • 2019-10-27
            • 2021-03-05
            • 1970-01-01
            • 2020-12-25
            相关资源
            最近更新 更多