【发布时间】:2017-02-22 18:55:24
【问题描述】:
我按照这个问题Append multiple numpy files to one big numpy file in python为了将许多numpy文件放在一个大文件中,结果是:
import matplotlib.pyplot as plt
import numpy as np
import glob
import os, sys
fpath ="path_Of_my_final_Big_File"
npyfilespath ="path_of_my_numpy_files"
os.chdir(npyfilespath)
npfiles= glob.glob("*.npy")
npfiles.sort()
all_arrays = np.zeros((166601,8000))
for i,npfile in enumerate(npfiles):
all_arrays[i]=np.load(os.path.join(npyfilespath, npfile))
np.save(fpath, all_arrays)
data = np.load(fpath)
print data
print data.shape
我有数千个文件,通过使用此代码,我总是出现内存错误,所以我无法获得我的结果文件。 如何解决此错误? 如何逐个文件地读取、写入和附加最终的 numpy 文件?
【问题讨论】:
-
什么时候出现内存错误?你的
np.zeros行对我的系统来说太大了,创建了一个 10G 阵列。如果数组太大而无法保存或重新加载,则可能太大而无法操作和绘制。为什么不将数据保存在块中?它必须在一个大文件/数组中吗? -
@hpaulj,我得到内存错误,就在这一行之后 all_arrays = np.zeros((166601,8000))。
-
但是我当然有 166601 文件,而且很多。每个文件我有 8000 分
-
@hpaulj,请问该怎么做?如果您能帮助我,我将不胜感激。其实昨天执行我的文件时,我花了一个小时等待新文件的出现,但徒劳无功。
-
没有希望管理阵列中的所有文件数据。一个一个地计算你的文件,只存储有用的结果。