python - 如何将非常大的数组保存到磁盘?

标签 python numpy serialization multidimensional-array

如何将非常大的ndarray保存到磁盘?

请注意,任何解决方案(包括复制数据)都是 Not Acceptable 。

例如这段代码

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.5 G 文件。

监控 python 的内存使用情况表明,在保存过程中它并没有显着增加,因此没有创建副本。

关于python - 如何将非常大的数组保存到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45089164/

相关文章:

python - 有没有办法在不计算右逆的情况下解决 yB = c?

c# - 将 C# 表单序列化为 XML

python - x Axis 上的间隔

python - 如何合并列和重复行值以在 pandas 中匹配

python - 使用 Surf 和 Perspective Transform 获取图像相对于基本图像的方向

java - 为什么class需要实现serializable marker interface进行序列化?

c# - .net 中的流式 XML 序列化

python - 如何在特定的起始工作日(例如星期四)按周拆分数据框?

python - 为什么 python 在 `pass` 之后继续评估代码?

python - 在 Python 中一致地格式化数字