【问题标题】:How to transpose a 3D matrix?如何转置 3D 矩阵?
【发布时间】:2018-05-08 07:36:03
【问题描述】:

我有一个大小为 (100, 33, 66) 的 3D 矩阵 x_test,我想将其尺寸更改为 (100, 66, 33)

使用 python3.5 最有效的方法是什么?我在这些方面寻找一些东西:

y = x_test.transpose()

【问题讨论】:

    标签: python python-3.x numpy matrix transpose


    【解决方案1】:

    除了transpose(见@Cleb的回答)还有swapaxesmoveaxis

    import numpy as np
    mock = np.arange(30).reshape(2,3,5)
    
    mock.swapaxes(1,2)
    # array([[[ 0,  5, 10],
        [ 1,  6, 11],
        [ 2,  7, 12],
        [ 3,  8, 13],
        [ 4,  9, 14]],
    
       [[15, 20, 25],
        [16, 21, 26],
        [17, 22, 27],
        [18, 23, 28],
        [19, 24, 29]]])
    np.moveaxis(mock,2,1)
    # array([[[ 0,  5, 10],
        [ 1,  6, 11],
        [ 2,  7, 12],
        [ 3,  8, 13],
        [ 4,  9, 14]],
    
       [[15, 20, 25],
        [16, 21, 26],
        [17, 22, 27],
        [18, 23, 28],
        [19, 24, 29]]])
    

    【讨论】:

      【解决方案2】:

      您可以将所需的尺寸传递给函数np.transpose,在您的情况下使用np.transpose(x_test, (0, 2, 1))

      例如,

      import numpy as np
      
      x_test = np.arange(30).reshape(3, 2, 5)
      
      print(x_test)
      print(x_test.shape)
      

      这将打印出来

      [[[ 0  1  2  3  4]
        [ 5  6  7  8  9]]
      
       [[10 11 12 13 14]
        [15 16 17 18 19]]
      
       [[20 21 22 23 24]
        [25 26 27 28 29]]]
      (3, 2, 5)
      

      现在,您可以使用上面的命令转置矩阵

      y = np.transpose(x_test, (0, 2, 1))
      print(y)
      print(y.shape)
      

      这将给

      [[[ 0  5]
        [ 1  6]
        [ 2  7]
        [ 3  8]
        [ 4  9]]
      
       [[10 15]
        [11 16]
        [12 17]
        [13 18]
        [14 19]]
      
       [[20 25]
        [21 26]
        [22 27]
        [23 28]
        [24 29]]]
      (3, 5, 2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 2015-06-11
        • 2016-06-12
        • 2015-02-02
        相关资源
        最近更新 更多