【问题标题】:Xarray get matching variable names between two datasetsXarray 获取两个数据集之间的匹配变量名称
【发布时间】:2020-05-26 05:01:44
【问题描述】:

我有两个结构相同的类似 Netcdf 文件,例如:

file1 = xr.open_dataset("file1.nc")
file2 = xr.open_dataset("file2.nc")

print(file1)
Dimensions:       (Number_of_points: 232678)
Dimensions without coordinates: Number_of_points
Data variables:
    XLON          (Number_of_points) float64 ...
    XLAT          (Number_of_points) float64 ...
    VERSION       int32 ...
    BUG           int32 ...
    STORAGETYPE   |S40 ...
    SPLIT_PATCH   |S1 ...
    SEA           |S40 ...
    WATER         |S40 ...
    NATURE        |S40 ...
...
print(file2)
Dimensions:       (Number_of_points: 232678)
Dimensions without coordinates: Number_of_points
Data variables:
    XLON          (Number_of_points) float64 ...
    XLAT          (Number_of_points) float64 ...
    VERSION       int32 ...
    BUG           int32 ...
    STORAGETYPE   |S40 ...
    SPLIT_PATCH   |S1 ...
    NATURE        |S40 ...
...

在其中一个文件中,我缺少一些变量(例如上面的变量 SEA 和 WATER) 我想比较这两个文件以获取两个数据集之间的匹配变量名称,然后遍历 file1 以仅加载缺少的维度。 我想要的最终结果是自动加载:

Var1 = file1.SEA
Var2 = file1.WATER

有没有一种简单的方法可以用 Xarray 做到这一点?

谢谢,

泰奥

【问题讨论】:

  • 我不确定我是否完全理解这个问题。是用file1.data_vars 获取变量列表,然后在一行普通python 中与file2 比较你需要什么?
  • 是的,我想知道文件1中的变量是否存在于文件2中,然后从file1中只读取匹配的变量列表
  • 像这样:file1[[x for x in file1.data_vars if x in file2.data_vars]] ?
  • 我试过了,效果很好!谢谢!
  • 好的,我添加了答案

标签: python-xarray


【解决方案1】:

(抄袭我的评论,貌似成功了)

你可以在这里回退到普通的python:

file1[[x for x in file1.data_vars if x in file2.data_vars]]

【讨论】:

    猜你喜欢
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多