Как загрузить несколько файлов .npy в один массив numpy - PullRequest
0 голосов
/ 21 июня 2020

Я хочу загрузить несколько файлов numpy и поместить их в такой массив ["file1.npy", "file2.npy", "file3.npy", ......], чтобы применить уменьшение размерности PCA на этом массиве.

Любая помощь приветствуется

код

k=1
for indexPatient in range(0, len(patients)): 
    interictalData_withoutpca=np.concatenate((interictalData, tmpData[0:22,start*256:end]), axis=1)
    x=np.array(interictalData_withoutpca)
    y=np.save('interictalData_matrix'+str(k)+'_'+patients[indexPatient]+'_'+str(l),x)
    k+=1

1 Ответ

2 голосов
/ 21 июня 2020

Самый простой способ:

filenames = ["file1.npy", "file2.npy", "file3.npy"]
combined_data = np.array([np.load(fname) for fname in filenames])

Это требует, чтобы массивы, хранящиеся в каждом из файлов, имели одинаковую форму; в противном случае вы получите массив объектов, а не многомерный массив.

Если это большой объем данных, и вы знаете их форму, скажем, (n1, n2), более эффективно (по скорости и памяти) предварительно выделить данные:

combined_data = np.zeros((len(filenames), n1, n2))
for i, fn in enumerate(filenames):
   combined_data[i, :, :] = np.load(fn)

Также обратите внимание, что ваш код для генерации данных можно сделать больше Pythoni c:

for k, patient in enumerate(patients, start=1):
    idata = np.concatenate((interictalData, tmpData[0:22, start*256:end]), axis=1)
    np.save(f'interictalData_matrix{k}_{patient}_{l}.npy', idata)  
...