numpy 以特定方式重新塑造python

vs3odd8k  于 2023-03-08  发布在  Python
关注(0)|答案(2)|浏览(113)

很抱歉问了一个很琐碎的问题。
我有一个2D数组(shape =(2,9)),看起来像这样:

a = np.array([[ 1,  1,  1, 40, 40, 40, 80, 80, 80],
              [ 0,  0,  1,  0,  1,  1,  0,  1,  1]])

我想把它转换成3D数组(形状=(3,2,3)):

array([[[ 1,  1,  1],
        [ 0,  0,  1]],

       [[40, 40, 40],
        [ 0,  1,  1]],

       [[80, 80, 80],
        [ 0,  1,  1]]])

如您所见,在第一个数组中,我想获取轴0的前3个元素和轴1的前3个元素,然后获取轴0和轴1的接下来3个元素,最后获取轴0和轴1的最后3个元素。
有人有小费吗?谢谢,干杯!

osh3o9ms

osh3o9ms1#

您可以用途:

a.reshape((2,3,3)).swapaxes(0,1)

输出:

array([[[ 1,  1,  1],
        [ 0,  0,  1]],

       [[40, 40, 40],
        [ 0,  1,  1]],

       [[80, 80, 80],
        [ 0,  1,  1]]])
ujv3wf0j

ujv3wf0j2#

或者,

np.stack(np.array_split(a, [3,6], axis=1))

输出:

array([[[ 1,  1,  1],
        [ 0,  0,  1]],

       [[40, 40, 40],
        [ 0,  1,  1]],

       [[80, 80, 80],
        [ 0,  1,  1]]])

相关问题