Есть ли лучший способ создать массив NumPy, когда количество элементов очень велико? - PullRequest
0 голосов
/ 02 апреля 2019

Я читаю изображения (512 x 512) и соответствующие метки в формате .mat, а затем сохраняю их в массив 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

Затем я загрузил data1 и data2 со значениями, которые были сохранены в предыдущем файле np:

data1=np.load('xxtrain.npy')
data2=np.load('yytrain.npy')

Затем я напечатал форму каждого из данных1 и данных2:

print(data1.shape)
print(data2.shape)

печатается следующим образом:

(500,)
(500, 1, 1)

Форма data2 идеальна, но форма data1 должна была быть (500,512,512), она рассматривает данные1 как один массив из 500 элементов ....

Любая помощь будет оценена, спасибо:)

Извините за мой английский.

1 Ответ

0 голосов
/ 02 апреля 2019

Я отредактирую свой ответ, если вы предоставите больше информации, но я думаю, что проблема в том, что вы пытаетесь установить каждый элемент 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
...