如何在Python/numpy中将3D数组结果保存到4D数组?

如何在Python/numpy中将3D数组结果保存到4D数组?,numpy,multidimensional-array,Numpy,Multidimensional Array,我正在阅读有关32 X 32 RGB图像的信息。因此,它是一个三维阵列,形状(32,32,3)三维包含颜色R、G和B 现在,我想读50幅这样的图片,然后把这些图片做成一个数组。所以我决定制作一个四维数组,它的维数为(50,32,32,3),其中第一维的50是图像的数量,第二维,第三维和第四维是图像的维数,即(32,32,3) 我尝试使用concatenate执行此操作,但出现了错误。有没有办法做到这一点 您需要在连接之前添加一个轴,例如 import numpy as np arrs = [np

我正在阅读有关32 X 32 RGB图像的信息。因此,它是一个三维阵列,形状(32,32,3)三维包含颜色R、G和B

现在,我想读50幅这样的图片,然后把这些图片做成一个数组。所以我决定制作一个四维数组,它的维数为(50,32,32,3),其中第一维的50是图像的数量,第二维,第三维和第四维是图像的维数,即(32,32,3)


我尝试使用concatenate执行此操作,但出现了错误。有没有办法做到这一点

您需要在连接之前添加一个轴,例如

import numpy as np
arrs = [np.random.random((32, 32, 3))
        for i in range(50)]

res = np.concatenate([arr[np.newaxis] for arr in arrs])
res.shape
# (50, 32, 32, 3)
编辑:或者,在这种情况下,您只需在数组列表中调用
np.array

res = np.array(arrs)
res.shape
# (50, 32, 32, 3)

更简单的方法是在图像中添加另一个轴并附加它们

    old_image = np.ones((100,100,3))
    new_image = np.ones((100,100,3,1))    
    # lets jsut say you have two Images 
    old_image = np.reshape(old_image , (100,100,3,1))
    new_image = np.reshape(new_image , (100,100,3,1))
    directory = np.append( new_image , old_image , axis = 3)

干得好。如何实现
(32,32,3,50)
@user3051460:尝试
np.stack(arrs,axis=3)