xarray.open_mfdataset 对于一小部分变量
xarray.open_mfdataset for a small subset of variables
我正在尝试读取单个 WRF 输出变量的时间序列。时间序列是分布式的,每个文件一个时间戳,跨越 5000 多个 netCDF 文件。每个文件包含大约 200 个变量。
有没有办法只为我感兴趣的变量调用 xarray.open_mfdataset()?我可以通过向 'data_vars' 参数提供一个列表来指定单个变量,但它仍然读取 'minimal' 情况下的所有内容。对于我的文件,'minimal' 案例几乎包含所有内容,因此速度相对较慢。
我最好的选择是用 ncrcat 之类的东西创建一个包含我感兴趣的变量的单个 netCDF 文件,还是有更简化的方法完全在 xarray(或其他一些 python 工具)?
我的netCDF文件是netCDF4(不是netCDF4-classic),好像排除了netCDF4.MFDataset().
我不确定为什么提供 data_vars=
参数仍然读取所有数据 - 我在读取 WRF 输出时遇到了同样的问题。我的解决方法是列出我不需要的所有变量(全部 200 多个)并将其提供给 drop_variables=
参数。您可以获得所有变量的列表,然后删除或注释掉您想要保留的变量。
varlist = list(ds.variables)
作为稍后会找到此主题的人的跟进。
根据文档(但有点隐藏),“data_vars=”参数仅适用于 Python 3.9.
另一种选择是定义一个预处理函数,该函数通过“preprocess”关键字参数定义要保留的变量,例如:
preprocess=lambda ds: ds[variablelist]
我正在尝试读取单个 WRF 输出变量的时间序列。时间序列是分布式的,每个文件一个时间戳,跨越 5000 多个 netCDF 文件。每个文件包含大约 200 个变量。
有没有办法只为我感兴趣的变量调用 xarray.open_mfdataset()?我可以通过向 'data_vars' 参数提供一个列表来指定单个变量,但它仍然读取 'minimal' 情况下的所有内容。对于我的文件,'minimal' 案例几乎包含所有内容,因此速度相对较慢。
我最好的选择是用 ncrcat 之类的东西创建一个包含我感兴趣的变量的单个 netCDF 文件,还是有更简化的方法完全在 xarray(或其他一些 python 工具)?
我的netCDF文件是netCDF4(不是netCDF4-classic),好像排除了netCDF4.MFDataset().
我不确定为什么提供 data_vars=
参数仍然读取所有数据 - 我在读取 WRF 输出时遇到了同样的问题。我的解决方法是列出我不需要的所有变量(全部 200 多个)并将其提供给 drop_variables=
参数。您可以获得所有变量的列表,然后删除或注释掉您想要保留的变量。
varlist = list(ds.variables)
作为稍后会找到此主题的人的跟进。 根据文档(但有点隐藏),“data_vars=”参数仅适用于 Python 3.9.
另一种选择是定义一个预处理函数,该函数通过“preprocess”关键字参数定义要保留的变量,例如:
preprocess=lambda ds: ds[variablelist]