将 70 个 netCDF 文件与 xarray 合并

Posted

技术标签:

【中文标题】将 70 个 netCDF 文件与 xarray 合并【英文标题】:Merge 70 netCDF files with xarray 【发布时间】:2022-01-08 18:52:40 【问题描述】:

我想将 70 个 netCDF 文件合并为一个。为此,我使用 xarray 的 .to_netcdf() 函数:

    ds = xarray.open_mfdataset('*.nc')
    ds.to_netcdf('SST_2021-10_timeseries.nc')

我的问题是我的 jupyter notebook 总是因为文件数太多而挂掉。有没有更有效的方法来合并文件?

【问题讨论】:

不是 netCDF 的答案,但另一种选择是使用 zarr 存储而不是 netCDF(例如ds.to_zarr),因为 zarr 支持分块和并行写入。 【参考方案1】:

另一种方法是使用 nctoolkit。命令如下:

import nctoolkit as nc
ds = nc.open_data('*.nc')
ds.merge("time")
ds.to_nc('SST_2021-10_timeseries.nc')

或者您可以使用 CDO 在命令行上执行此操作:

cdo -mergetime *.nc SST_2021-10_timeseries.nc

这些选项应该可以解决任何 RAM 问题。

【讨论】:

似乎我无法在这一行中打开所有带有星号的数据集: ds = nc.open_data('*.nc') 然后会得到没有名称为 * 的数据集的消息.nc 你安装了哪个版本的nctoolkit? Conda 有安装旧版本的倾向,因此您拥有的版本可能不接受通配符 nctoolkit-0.3.9,我觉得是最新的吧? 好的。那应该行得通。但是试试:ds = nc.open_data(nc.create_ensemble(".", recursive = False))。您使用的是什么操作系统? 虽然字符串 "*.nc" 应该被 nctoolkit 替换为 glob.glob("'.nc')(第 436 行:github.com/pmlmodelling/nctoolkit/blob/master/nctoolkit/api.py)。所以我对发生的事情感到困惑

以上是关于将 70 个 netCDF 文件与 xarray 合并的主要内容,如果未能解决你的问题,请参考以下文章

使用xarray python组合空间netcdf文件

使用xarray加入/合并多个NetCDF文件

使用xarray从netcdf中提取最近的经纬度和时间值

使用 xarray 更改坐标系以进行切片操作

获取多维 xarray.DataArray 的 n 个最小值

将 hdf5 文件加载到 python xarrays