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。。。