【问题标题】:Transpose 3D Numpy Array转置 3D Numpy 数组
【发布时间】:2018-04-02 10:45:54
【问题描述】:

尝试转置我的 numpy 数组中的每个 numpy 数组。

这是我想要的一个例子:

答:

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

  [[ 7  8  9]
   [10 11 12]]]

转置:

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

  [[ 7  10]
   [ 8  11]
   [ 9  12]]]

尝试使用 np.apply_along_axis 函数执行此操作,但没有得到正确的结果。我正在尝试将其应用于一个非常大的数组,任何帮助将不胜感激!

A=np.arange(1,13).reshape(2,2,3)
A=np.apply_along_axis(np.transpose, 0, A)

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    你需要交换第二个和第三个轴,你可以使用np.swapaxes

    A.swapaxes(1,2)
    
    #array([[[ 1,  4],
    #        [ 2,  5],
    #        [ 3,  6]],
    
    #       [[ 7, 10],
    #        [ 8, 11],
    #        [ 9, 12]]])
    

    transpose:

    A.transpose(0,2,1)
    
    #array([[[ 1,  4],
    #        [ 2,  5],
    #        [ 3,  6]],
    
    #       [[ 7, 10],
    #        [ 8, 11],
    #        [ 9, 12]]])
    

    【讨论】:

      【解决方案2】:

      为了完整起见,还有moveaxis 替换了已弃用的rollaxis

      >>> np.rollaxis(A, 2, 1)
      array([[[ 1,  4],
              [ 2,  5],
              [ 3,  6]],
      
             [[ 7, 10],
              [ 8, 11],
              [ 9, 12]]])
      >>> np.moveaxis(A, 2, 1)
      array([[[ 1,  4],
              [ 2,  5],
              [ 3,  6]],
      
             [[ 7, 10],
              [ 8, 11],
              [ 9, 12]]])
      

      【讨论】:

        【解决方案3】:

        你寻求的转变:

        A = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
        solution = np.array([A[0].T,A[1].T]) 
        

        【讨论】:

          猜你喜欢
          • 2020-07-21
          • 2017-01-14
          • 2021-12-29
          • 2017-03-10
          • 2017-07-27
          • 2019-10-31
          • 1970-01-01
          • 1970-01-01
          • 2017-07-26
          相关资源
          最近更新 更多