numpy 34维数组转置和不同维度不转置

a = np.linspace(1,32,32).reshape(2,2,4,2)

array([[[[ 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., 30.],
         [31., 32.]]]])

①直接转置
a.T

array([[[[ 1., 17.],
         [ 9., 25.]],

        [[ 3., 19.],
         [11., 27.]],

        [[ 5., 21.],
         [13., 29.]],

        [[ 7., 23.],
         [15., 31.]]],


       [[[ 2., 18.],
         [10., 26.]],

        [[ 4., 20.],
         [12., 28.]],

        [[ 6., 22.],
         [14., 30.]],

        [[ 8., 24.],
         [16., 32.]]]])

a.T.shape
(2, 4, 2, 2)

②转换为3维转置
a[0].T

array([[[ 1.,  9.],
        [ 3., 11.],
        [ 5., 13.],
        [ 7., 15.]],

       [[ 2., 10.],
        [ 4., 12.],
        [ 6., 14.],
        [ 8., 16.]]])

a[0].T.shape
(2, 4, 2)

扩展,不同维度转置
a = [ [[1,2],[1,3]],
[[2,3],[2,4],[2,5]] ]
a = np.array(a)
a.shape
(2,)

a.T

array([list([[1, 2], [1, 3]]), list([[2, 3], [2, 4], [2, 5]])],
      dtype=object)

对比
a = [ [[1,2],[1,3],[1,4]],
[[2,3],[2,4],[2,5]] ]
a=np.array(a)
a.shape
(2, 3, 2)

array([[[1, 2],
        [1, 2],
        [1, 2]],

       [[2, 3],
        [3, 4],
        [4, 5]]])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容