我是python的新手,如果我的问题看似微不足道,我会事先道歉。
我有一个.h5文件,其中包含以匹配和非匹配组织的灰度图像对。为了我的最终目的,我需要将每对图像视为2个通道的单个图像(其中每个通道实际上是图像)。
要使用我的数据,请按以下步骤操作:
我读了.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()
然后我尝试重塑数组:
reshaped_data_m = np_m.reshape(250000,2,4096)
现在,如果我将数组重塑为(250000,2,4096),然后我尝试显示相应的图像,我得到的实际上是正确的。但我需要将数组重新整形为(25000,64,64,2),当我尝试这样做时,我得到所有黑色图像。
你能帮帮我吗? 提前谢谢!答案 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)