繁体   English   中英

Python:是否可以在不将其内容加载到RAM的情况下写入文件?

[英]Python: Can I write to a file without loading its contents in RAM?

有一个我想洗牌的大数据集。 整套设备无法放入RAM,因此,如果我可以同时打开多个文件(例如hdf5,numpy),按时间顺序遍历我的数据并将每个数据点随机分配给其中一个堆,则会很好(然后将每个数据点随机播放)桩)。

我真的没有用python处理数据的经验,所以我不确定是否可以在不将其余内容保存在RAM中的情况下写入文件(使用np.save和savez几乎没有成功)。

在h5py或numpy中是否可行,如果可以,我该怎么办?

内存映射文件将满足您的需求。 他们创建了一个numpy数组,该数组将数据保留在磁盘上,仅根据需要加载数据。 完整的手册页在这里 但是,使用它们的最简单方法是在对np.load的调用中传递参数mmap_mode=r+mmap_mode=w+ ,将文件np.load在磁盘上(请参见此处 )。

我建议使用高级索引。 如果数据位于一维数组arr ,则可以使用列表对其进行索引。 所以arr[ [0,3,5]]会给你的第0,第3和第5元素arr 这将使选择改组的版本更加容易。 由于这将覆盖数据,因此您需要以只读方式打开磁盘上的文件,并创建副本(使用mmap_mode=w+ )以将经过改组的数据放入其中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM