python窗口写入,例如NetCDF

2024-04-24 11:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

xarray输入/输出文档注意到,xarray不支持增量写入,只支持增量读取,除了通过dask.array流传输(另外,修改数据集只会影响内存中的副本,而不会影响连接的文件。)dask文档建议在每次操作之后可能需要保存整个数组


Tags: 文件数据内存文档副本数组array增量
1条回答
网友
1楼 · 发布于 2024-04-24 11:44:19

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

注意:这种方法还提供了逐步增加数组维数的机会(通过调用大小为NonecreateDimension,使其成为变量的第一个维数,并沿着该变量的维数迭代地分配给增量较大的索引)

尽管随机访问窗口(即子集)写入似乎需要较低级别的包,但更系统的子集写入(最终覆盖整个数组)可以通过xarray(通过指定块大小参数来触发使用dask.array后端)以增量方式完成,如果对算法进行重构,使主循环出现在dask/xarray store-to-file调用中。这意味着您将无法明确控制块的生成和写入顺序

相关问题 更多 >