首页 > 解决方案 > 如何在 python 中将多个 3 维数组更改为单个 4 维数组?

问题描述

我正在尝试使用 python将多个图像存储一个 4 维数组中。我怎样才能改变它?

我已经尝试过 np.vstack, np.concatenate, np.hstack 像下面的方式 image_all = np.concatenate([img_3, img_4], axis=0),但我得到“除了连接轴之外的所有输入数组维度必须完全匹配“。

我试图为图像创建新尺寸但没有工作。我创建了类似 img_1 = (1, 428, 640, 3) 并且我确实喜欢所有人并尝试创建新的 ndarray 但没有成功

假设我有以下尺寸的图像

img_1 = (428, 640, 3)
img_2 = (426, 640, 3)
img_3 = (426, 640, 3)
img_4 = (640, 480, 3)
img_5 = (640, 427, 3)

我希望我的新维度数组是连接的,并且维度为(5, ?, ? 3),如下面的 img_all.shape = (5, ?, ?, 3)

标签: pythonmultidimensional-arraynumpy-ndarray

解决方案


不同形状的 Numpy 数组不能按照您要求的方式组合在一个数组中。但是您可以轻松地将图像调整为相同的形状,然后合并。您可以像这样使用枕头库:

import numpy as np
from PIL import Image

# List of images to be combined in a single array
images = [img_1, img_2, img_3, img_4, img_5] 

# Common shape
SIZE = (640, 480) # Any size you find suitable

# Convert into pillow images and resize
images_pil = [Image.fromarray(img).resize(SIZE) for img in images]

# Convert back and combine into single array
images_np_arr = np.array([np.array(img) for img in images_pil])


print(images_np_arr.shape) # prints (5, 640, 480, 3)

推荐阅读