Numpy从扁平化高级重塑

gr8qqesn  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(120)

一些代码会导致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]]]])
uqdfh47h

uqdfh47h1#

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]]])

相关问题