扁平化的 Numpy 高级重塑

问题描述 投票:0回答:1

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]]]])
python numpy numpy-ndarray scientific-computing numpy-slicing
1个回答
0
投票
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]]])

不完全是,切换最后两个维度更正:

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

       [[2, 0],
        [2, 3]]])
© www.soinside.com 2019 - 2024. All rights reserved.