如何重塑从python中的.h5文件获取的图像数组?

时间:2016-09-05 08:33:36

标签: python

我是python的新手,如果我的问题看似微不足道,我会事先道歉。

我有一个.h5文件,其中包含以匹配和非匹配组织的灰度图像对。为了我的最终目的,我需要将每对图像视为2个通道的单个图像(其中每个通道实际上是图像)。

要使用我的数据,请按以下步骤操作:

  1. 我读了.h5文件,将我的数据放在numpy数组中(我读了两组匹配和不匹配,两者都有形状(50000,4096)):

     with h5py.File('supervised_64x64.h5','r') as hf:
         match = hf.get('/match')
         non_match = hf.get('/non-match')
         np_m = np.asarray(match)
         np_nm = np.asarray(non_match)
         hf.close()
    
  2. 然后我尝试重塑数组:

    reshaped_data_m = np_m.reshape(250000,2,4096)
    
  3. 现在,如果我将数组重塑为(250000,2,4096),然后我尝试显示相应的图像,我得到的实际上是正确的。但我需要将数组重新整形为(25000,64,64,2),当我尝试这样做时,我得到所有黑色图像。

    你能帮帮我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

我敢打赌,您需要先将输入矩阵从250000x2x4096转换为250000x4096x2,之后您可以执行reshape

幸运的是,numpy提供了transpose功能,应该可以解决这个问题。有关转置的更多讨论,请参阅this question

在您的特定情况下,调用将是:

transposed_data_m = numpy.transpose(np_m, [1, 3, 2])
reshaped_data_m = tranposed_data_m.reshape(250000, 64, 64, 2)