numpy重塑更改图像

时间:2019-02-16 04:20:00

标签: python arrays numpy keras

我有一个包含2d图像的numpy数组X。 numpy数组尺寸为(1000,60,40)(1000 = img号)。

我想将此数组提供给我的模型,但要求尺寸为 (1000,60,40,1)(为通道数添加了1)。

所以我通过

重塑了数组的形状
Y=X.reshape(1000,60,40,1)

由于我有错误的预测,我通过重塑变形数组来检查它是否与我的原始img相同, 我这样做是

Z=Y.reshape(1000,60,40)

然后我将它们另存为PNG

for i in range(1000):
misc.imsave('img_rereshaped'+str(i)+'.png',Z[i])

它提供了一些png文件作为输出,但它们与X numpy数组中的原始文件不同。

我是用错误的方式重塑还是重塑更改输入数据,然后重塑重塑后的数据会得到与原始数据不同的结果?

1 个答案:

答案 0 :(得分:0)

要测试重塑是否引起问题,最好在不涉及其他misc.imsave()等潜在错误的情况下进行测试。 运行类似的内容:

import numpy as np
a = np.random.rand(10,3)
b = np.reshape(a, [10, 3, 1])
c = np.reshape(b, [10, 3])
print(np.sum(c - a))

您将看到使用重塑来回移动不会造成问题。 可能是您未正确使用PNG保存。例如,该功能可能需要3个通道。尝试使用matplotlib在本地进行绘制。