我正在读取.mat格式的图像(512 x 512)和相应的标签,然后将其存储到numpy数组中,最后存储到.npy文件中。...
i=0
arr1=[]
while(i<500):
f=h5py.File(imagenames[i])
dset=f['cjdata']
print(i)
a1=dset['image']
a2=dset['label']
arr1.append(np.array(a1))
arr2.append(np.array(a2))
np.save('xxtrain.npy',arr1)
np.save('yytrain.npy',arr2)
i=i+1
然后我将存储在上一个np文件中的值加载到data1和data2中:
data1=np.load('xxtrain.npy')
data2=np.load('yytrain.npy')
然后,我打印了每个data1和data2的形状:
print(data1.shape)
print(data2.shape)
打印如下:
(500,)
(500, 1, 1)
data2形状是完美的,但是data1形状应该是(500,512,512),它考虑到data1是一个由500个元素组成的数组...。
任何帮助将不胜感激,谢谢:)
对不起,我的英语。
答案 0 :(得分:0)
如果您提供更多信息,我会编辑我的答案,但是我认为问题是您试图使用numpy数组设置arr1(列表)的每个元素,但是np.save()不知道如何处理它。这样可以解决问题:
i=0
arr1=np.zeroes((500, 512, 512))
while(i<500):
f=h5py.File(imagenames[i])
dset=f['cjdata']
print(i)
a1=dset['image']
a2=dset['label']
arr1[i,:,:] = np.array(a1)
arr2.append(np.array(a2))
np.save('xxtrain.npy',arr1)
np.save('yytrain.npy',arr2)
i=i+1