首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:我可以在不将内容加载到RAM的情况下写入文件吗?

Python:我可以在不将内容加载到RAM的情况下写入文件吗?
EN

Stack Overflow用户
提问于 2019-07-09 22:51:30
回答 1查看 271关注 0票数 0

我有一个很大的数据集,我想洗牌。如果我可以同时打开几个文件(例如hdf5,numpy),按时间顺序遍历我的数据,并将每个数据点随机分配到其中一个堆中(然后对每个堆进行混洗),那就太好了。

我真的没有在python中处理数据的经验,所以我不确定是否有可能在不将文件的其余内容保存在内存中的情况下将其写入文件(我一直在使用np.save和savez,但收效甚微)。

在h5py或numpy中,这是可能的吗?如果可能,我该如何做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 23:26:39

内存映射文件可以满足您的需求。它们创建一个numpy数组,将数据留在磁盘上,只在需要时加载数据。完整的手册页面是here。但是,使用它们的最简单方法是在调用np.load时传递参数mmap_mode=r+mmap_mode=w+,从而将文件保留在磁盘上(请参阅here)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56955283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档