如何将多个.npy文件加载到单个numpy数组中

3
我希望能够加载多个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个回答

6

最简单的方法是:

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

此要求每个文件中存储的数组具有相同的形状(shape),否则将得到一个对象数组(object array)而不是多维数组。

如果处理的数据量很大且您知道数据的形状,比如 (n1, n2),那么预先分配(preallocate)数据更有效(速度和内存方面):

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

同时,注意到可以使生成数据的代码更加Pythonic:

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)  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接