将 2D 数组转换为重复现有值的 3D 数组

Convert a 2D array into 3D array repeating existing values

我有一个形状为 (360,480) 的数组,其中包含从 1 到 11 的值,

 Array([[ 1,  1,  1, ...,  1,  1,  1],
   [ 1,  1,  1, ...,  1,  1,  1],
   [ 1,  1,  1, ...,  1,  1,  1],
   ...,
   [ 4,  4,  4, ..., 11, 11, 11],
   [ 4,  4,  4, ..., 11, 11, 11],
   [ 4,  4,  4, ..., 11, 11, 11]])

我怎样才能将这个数组重塑为形状 (360,480,3) 的数组

np.all(array[:,:,0]==array[:,:,1])

np.all(array[:,:,0]==array[:,:,2])

都是真的吗? 预期结果应该是

array([[[ 1,  1,  1],
    [ 1,  1,  1],
    [ 1,  1,  1],
    ...,
    [ 1,  1,  1],
    [ 1,  1,  1],
    [ 1,  1,  1]],

   [[ 4,  4,  4],
    [ 4,  4,  4],
    [ 4,  4,  4],
    ...,
    [11, 11, 11],
    [11, 11, 11],
    [11, 11, 11]],

   [[ 4,  4,  4],
    [ 4,  4,  4],
    [ 4,  4,  4],
    ...,
    [11, 11, 11],
    [11, 11, 11],
    [11, 11, 11]]])

你可以使用numpy.repeat函数

https://numpy.org/doc/stable/reference/generated/numpy.repeat.html

array3d = np.repeat(array2d[:, :, None], repeats=3, axis=2)