从展平的Numpy重塑

2admgd59  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(129)

一些代码会导致numpy数组:array([[2, 2, 1, 0, 4, 2, 3, 3]])
我想从中恢复:

array([ [[2, 1], 
         [4, 3]], 

         [[2, 0], 
          [2, 3]] ])

即:将跳过的元素放入两个矩阵中。
请告知如何实现任意数量的最终矩阵(在玩具例子中为2)和它们的维数(总是彼此相等;玩具示例中的2x2)。
我尝试了reshape(2,2,2,1),结果失败了:

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

        [[1],
         [0]]],

       [[[4],
         [2]],

        [[3],
         [3]]]])
icnyk63a

icnyk63a1#

In [195]: arr = np.array([[2, 2, 1, 0, 4, 2, 3, 3]])

In [196]: arr.reshape(2,2,2)
Out[196]: 
array([[[2, 2],
        [1, 0]],

       [[4, 2],
        [3, 3]]])

第一次猜测转置-

In [197]: arr.reshape(2,2,2).transpose(2,1,0)
Out[197]: 
array([[[2, 4],
        [1, 3]],

       [[2, 2],
        [0, 3]]])

不完全是,切换最后2个维度可以纠正:

In [198]: arr.reshape(2,2,2).transpose(2,0,1)
Out[198]: 
array([[[2, 1],
        [4, 3]],

       [[2, 0],
        [2, 3]]])

相关问题