如何在 numpy 中为 3D 数组添加新的列、行和形状?

How to add a new column, row and shape for a 3D array in numpy?

a = np.zeros((2,2,2,3),int)的输出是

[[[[0 0 0]
   [0 0 0]]

  [[0 0 0]
   [0 0 0]]]

 [[[0 0 0]
   [0 0 0]]

  [[0 0 0]
   [0 0 0]]]]

我有一个列表 Y = [a,b],我想添加新的行、列和形状,这样新的形状将是 (2,3,3,4)

输出将是这样的:

[[[[0 0 0 a]
   [0 0 0 a]
   [a a a a]]

  [[0 0 0 a]
   [0 0 0 a]
   [a a a a]]

  [[a a a a]
   [a a a a]
   [a a a a]]]


 [[[0 0 0 b]
   [0 0 0 b]
   [b b b b]

  [[0 0 0 b]
   [0 0 0 b]
   [b b b b]

  [[b b b b]
   [b b b b]
   [b b b b]]]

我已经尝试解决了将近2天,但我没有成功。

创建起始数组和目标:

In [14]: a = np.ones((2,2,2,3),int)
In [15]: Y = np.zeros((2,3,3,4),int)

填充背景:

In [21]: Y[0,:,:,:]=2
In [22]: Y[1,:,:,:]=3

然后是 a:

In [23]: Y[:,:2,:2,:3]=a

结果:

In [24]: Y
Out[24]: 
array([[[[1, 1, 1, 2],
         [1, 1, 1, 2],
         [2, 2, 2, 2]],

        [[1, 1, 1, 2],
         [1, 1, 1, 2],
         [2, 2, 2, 2]],

        [[2, 2, 2, 2],
         [2, 2, 2, 2],
         [2, 2, 2, 2]]],


       [[[1, 1, 1, 3],
         [1, 1, 1, 3],
         [3, 3, 3, 3]],

        [[1, 1, 1, 3],
         [1, 1, 1, 3],
         [3, 3, 3, 3]],

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