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 numpy-slicing
1个回答
1
投票
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.