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

时间:2015-11-03 11:52:54

标签: numpy multidimensional-array

我正在阅读有关32 X 32 RGB图像的信息。因此它是具有形状(32,32,3)的3D阵列,第三维保持颜色R,G和B

现在,我想阅读50个这样的图像并制作这些图像的数组。所以我决定制作一个4D阵列,其尺寸(50,32,32,3)在这里50在第一维度是图像的数量,第二,第三和第四维度是图像的维度是(32, 32,3)

我尝试使用连接但我收到错误。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:9)

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

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)

答案 1 :(得分:2)

更容易在图像中添加另一个轴并附加它们

    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)