【问题标题】:Merge 70 netCDF files with xarray将 70 个 netCDF 文件与 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 支持分块和并行写入。

标签: python netcdf python-xarray


【解决方案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)。所以我对发生的事情感到困惑
猜你喜欢
  • 2018-04-23
  • 2021-01-22
  • 2018-10-10
  • 2018-12-31
  • 2019-06-19
  • 2013-06-28
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多