当元素数量很高时,有没有更好的方法创建numpy数组?

时间:2019-04-02 15:03:39

标签: numpy numpy-ndarray

我正在读取.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个元素组成的数组...。

任何帮助将不胜感激,谢谢:)

对不起,我的英语。

1 个答案:

答案 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