Python3.6-将大数组保存到文件
我想把大数组保存到文件中。我使用了Python3.6-将大数组保存到文件,python,arrays,python-3.x,file,pickle,Python,Arrays,Python 3.x,File,Pickle,我想把大数组保存到文件中。我使用了pickle.dump(数组、文件、pickle.HIGHEST\u协议)。它适用于小型阵列,但当我试图保存非常大的阵列(例如1GB或更多)时,它会占用整个内存,我的电脑会冻结 有没有办法保存那个大阵列 阵列示例: [[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float3
pickle.dump(数组、文件、pickle.HIGHEST\u协议)
。它适用于小型阵列,但当我试图保存非常大的阵列(例如1GB或更多)时,它会占用整个内存,我的电脑会冻结
有没有办法保存那个大阵列
阵列示例:
[[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)],
[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)],
[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)]]
如果它是(或可以转换成)numpy数组,那么效率更高看看HDF5格式和python实现h5py 这样就可以附加到文件中。您可以在数据集上循环。或者在集群中追加数据
import h5py
# data
n = int(1e6)
arr = np.arange(n)
# writing to hdf5
f = h5py.File("mytestfile.hdf5", "w")
dset = f.create_dataset("data_name", shape=(n,))
dset[:n] = arr[:n]
f.close()
# reading from hdf5
f = h5py.File("mytestfile.hdf5", "r")
print(f["name"][:])
# outputs
# [ 0. 1. 2. ..., 999997. 999998. 999999.]
也许保存数组可以改为二进制格式,即使这是一项更大的工作。你有一个
数组的例子吗(请小的一个?)。我不确定类型。假设你使用numpy
:试试,它会保存到.npy
文件中。请给出一个数组的例子。不要使用pickle(存储数据):使用Json、Csv、HDF5。。。