2024-04-24 11:44:19 发布
网友
在python中,如何将数组的子集写入磁盘,而不将整个数组保存在内存中
xarray输入/输出文档注意到,xarray不支持增量写入,只支持增量读取,除了通过dask.array流传输(另外,修改数据集只会影响内存中的副本,而不会影响连接的文件。)dask文档建议在每次操作之后可能需要保存整个数组
xarray
dask.array
dask
这可以使用netCDF4(底层NetCDF绑定的python库)来完成。只需分配给数据集变量的一个片段,然后有选择地调用dataset.sync()方法,以确保在将这些更改刷新到文件之前没有延迟
netCDF4
.sync()
注意:这种方法还提供了逐步增加数组维数的机会(通过调用大小为None的createDimension,使其成为变量的第一个维数,并沿着该变量的维数迭代地分配给增量较大的索引)
None
createDimension
尽管随机访问窗口(即子集)写入似乎需要较低级别的包,但更系统的子集写入(最终覆盖整个数组)可以通过xarray(通过指定块大小参数来触发使用dask.array后端)以增量方式完成,如果对算法进行重构,使主循环出现在dask/xarray store-to-file调用中。这意味着您将无法明确控制块的生成和写入顺序
这可以使用
netCDF4
(底层NetCDF绑定的python库)来完成。只需分配给数据集变量的一个片段,然后有选择地调用dataset.sync()
方法,以确保在将这些更改刷新到文件之前没有延迟注意:这种方法还提供了逐步增加数组维数的机会(通过调用大小为
None
的createDimension
,使其成为变量的第一个维数,并沿着该变量的维数迭代地分配给增量较大的索引)尽管随机访问窗口(即子集)写入似乎需要较低级别的包,但更系统的子集写入(最终覆盖整个数组)可以通过
xarray
(通过指定块大小参数来触发使用dask.array
后端)以增量方式完成,如果对算法进行重构,使主循环出现在dask/xarray store-to-file调用中。这意味着您将无法明确控制块的生成和写入顺序相关问题 更多 >
编程相关推荐