Python 如何将非常大的数据阵列保存到磁盘?

Python 如何将非常大的数据阵列保存到磁盘?,python,numpy,serialization,multidimensional-array,Python,Numpy,Serialization,Multidimensional Array,如何将非常大的数据阵列保存到磁盘 请注意,不接受任何解决方案,包括复制数据 例如,此代码 x = pandas.HDFStore("some_file.hdf") x.append("a", pandas.DataFrame(a)) 包括 pandas.DataFrame(a) 不可批准的重复内存使用 明显的代码 pickle.dump(a, f) 挂起。看起来numpy的save函数可以处理大型数组 from pylab import * q = randn(1000, 1000, 10

如何将非常大的数据阵列保存到磁盘

请注意,不接受任何解决方案,包括复制数据

例如,此代码

x = pandas.HDFStore("some_file.hdf")
x.append("a", pandas.DataFrame(a))
包括

pandas.DataFrame(a)
不可批准的重复内存使用

明显的代码

pickle.dump(a, f)

挂起。

看起来numpy的save函数可以处理大型数组

from pylab import *
q = randn(1000, 1000, 1000)
print('{} G'.format(q.nbytes/1024**3))
np.save(open('test_large_array_save.dat', 'wb'), q, allow_pickle=False)
结果

7.450580596923828 G
以及在磁盘上创建的7.5g文件


监视python的内存使用情况表明,它在保存期间不会显著增加,因此不会创建副本。

您是否研究了
pickle
的一些替代方法?这里有一些想法:我试过cPickle,发现它有4GB的不可突破的极限。还查看了MessagePack,但不了解如何使用它序列化数据。没有尝试JSON,因为我认为以文本形式编写是无效的。
np.save
可以处理它吗?如果没有,具体有多少数据?另外,还有一些讨论:如果您询问所使用的格式,文档中有一些详细信息: