gpt4 book ai didi

python - 用 python 窗口化编写,例如到 NetCDF

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:33 24 4
gpt4 key购买 nike

在 python 中,如何将数组的子集写入磁盘,而不将整个数组保存在内存中?

xarray 输入/输出文档指出,xarray 不支持增量写入,仅支持增量读取,除非通过 dask.array 进行流式传输。 (此外,修改数据集仅影响内存中的副本,而不影响连接的文件。)dask 文档建议可能有必要在每次操作后保存整个数组?

最佳答案

这可以使用 netCDF4(低级 NetCDF 绑定(bind)的 python 库)来完成。只需分配给数据集变量的一个切片,然后可以选择调用数据集 .sync() 方法,以确保在将这些更改刷新到文件之前没有延迟。

请注意,此方法还提供了逐步增加数组维度的机会(通过调用大小为 NonecreateDimension,使其成为变量的第一个维度,并且沿着变量的维度迭代地分配到逐渐增大的索引)。

虽然随机访问窗口(即子集)写入似乎需要较低级别的包,但可以使用 xarray 增量地完成更系统的子集写入(最终覆盖整个数组)(通过指定一个 block ) size 参数来触发使用 dask.array 后端),并且前提是您的算法经过重构,以便主循环发生在 dask/xarray 存储到文件调用中。这意味着您将无法明确控制 block 的生成和写入顺序。

关于python - 用 python 窗口化编写,例如到 NetCDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com