python中的窗口写入,例如到NetCDF
在python中,如何将数组的子集写入磁盘,而不将整个数组保存在内存中python中的窗口写入,例如到NetCDF,python,large-data,netcdf,Python,Large Data,Netcdf,在python中,如何将数组的子集写入磁盘,而不将整个数组保存在内存中 xarrayinput/output文档注意到,xarray不支持增量写入,只支持增量读取,通过dask.array流传输除外。(另外,修改数据集只会影响内存中的副本,而不会影响连接的文件。)dask文档建议可能需要在每次操作后保存整个数组?这可以使用netCDF4(低级NetCDF绑定的python库)来完成。只需分配给dataset变量的一个片段,然后可以选择调用dataset.sync()方法,以确保在将这些更改刷新到
xarray
input/output文档注意到,xarray不支持增量写入,只支持增量读取,通过dask.array
流传输除外。(另外,修改数据集只会影响内存中的副本,而不会影响连接的文件。)dask
文档建议可能需要在每次操作后保存整个数组?这可以使用netCDF4
(低级NetCDF绑定的python库)来完成。只需分配给dataset变量的一个片段,然后可以选择调用dataset.sync()
方法,以确保在将这些更改刷新到文件之前没有延迟
注意:这种方法还提供了逐步增加数组维度的机会(通过使用sizeNone
调用createDimension
,使其成为变量的第一个维度,并沿该变量维度迭代分配增量较大的索引)
尽管随机访问窗口(即子集)写入似乎需要较低级别的包,但可以使用
xarray
(通过指定块大小参数触发使用dask.array
后端)以增量方式完成更系统的子集写入(最终覆盖整个阵列),并且假设对算法进行重构,以便主循环发生在dask/xarray存储到文件调用中。这意味着您将无法明确控制块的生成和写入顺序。这可以使用netCDF4
(低级NetCDF绑定的python库)来完成。只需分配给dataset变量的一个片段,然后可以选择调用dataset.sync()
方法,以确保在将这些更改刷新到文件之前没有延迟
注意:这种方法还提供了逐步增加数组维度的机会(通过使用sizeNone
调用createDimension
,使其成为变量的第一个维度,并沿该变量维度迭代分配增量较大的索引)
尽管随机访问窗口(即子集)写入似乎需要较低级别的包,但可以使用
xarray
(通过指定块大小参数触发使用dask.array
后端)以增量方式完成更系统的子集写入(最终覆盖整个阵列),并且假设对算法进行重构,以便主循环发生在dask/xarray存储到文件调用中。这意味着您将无法明确控制块的生成和写入顺序。似乎可以使用HDF5(h5py
),在每次分配数据集/数组的子集后调用.flush()
)。不确定是否也可以使用NetCDF?如何打开NetCDF?如果您正在使用xarray
的open_dataset
并指定chunks
参数,则NetCDF将逐块加载到内存中:似乎可以使用HDF5(h5py
),在每次分配到数据集/数组的子集后调用.flush()
)。不确定是否也可以使用NetCDF?如何打开NetCDF?如果您正在使用xarray
的open_dataset
并指定chunks
参数,则NetCDF将逐块加载到内存中: