我遇到一个Numpy形状问题。我有一批128x128x3的图片,我试图将列表的形状调整为batch_size x 128 x 128 x 3。
让我们逐步了解到目前为止。
我们有3个列表,其中包括图像和其他一些元数据。视觉上:
my_data
|row|raw_image|meta_data1|meta_data2|
-------------------------------------
|1 |128x128x3|8685 |'here' |
-------------------------------------
|2 |128x128x3|8402 |'there' |
-------------------------------------
|3 |128x128x3|5498 |'where' |
print(my_data.shape) #(3,4)
我们只想获取raw_image数据:
image_data = my_data[:, 1]
print(image_data.shape) #(3,)
print(image_data[0].shape) #(128,128,3)
我认为image_data已经在3x128x128x3中,但是出现错误,例如:
ValueError:检查时出错:预期input_1具有4维,但数组的形状为(384,128,3)
或
ValueError:检查时出错:预期input_1具有4维,但数组的形状为(3,1)
我已经尝试过重塑,就像这样:
np.reshape(image_data, (3, 128, 128, 3))
但是出现以下错误:
ValueError:无法将大小为3的数组重塑为形状(3,128,128,3)
那么,我应该如何进行?我已经尝试过与vstack结合使用,调整形状,扩展暗淡,消除暗淡...
答案 0 :(得分:2)
image_data
是一个对象数组,您可以使用np.stack(image_data)
合并它们;这应该按照第一个轴将所有图像堆叠在image_data
内,并根据需要创建4d数组。