【问题标题】:How can I save 3D array results to a 4D array in Python/numpy?如何在 Python/numpy 中将 3D 数组结果保存到 4D 数组?
【发布时间】:2015-11-03 11:52:54
【问题描述】:

我正在阅读有关 32 X 32 RGB 图像的信息。所以它是一个形状为 (32,32,3) 的 3D 数组,第三维包含颜色 R、G 和 B

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

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

【问题讨论】:

    标签: numpy multidimensional-array


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 干得好。如何实现(32, 32, 3, 50)
    • @user3051460:试试np.stack(arrs, axis=3)
    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2018-03-17
      • 2021-10-14
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多