将数据集与 xarray 合并使变量为 nan

Posted

技术标签:

【中文标题】将数据集与 xarray 合并使变量为 nan【英文标题】:Merging datasets with xarray makes variables to be nan 【发布时间】:2022-01-03 18:57:41 【问题描述】:

我想在同一个图中表示两个数据集,所以我使用 xarray 合并它们。它们是这样的:

ds1

<xarray.Dataset>
Dimensions:  (time: 1, lat: 1037, lon: 1345)
Coordinates:
  * lat      (lat) float32 37.7 37.7 37.69 37.69 37.69 ... 35.01 35.01 35.0 35.0
  * time     (time) datetime64[ns] 2021-11-23
  * lon      (lon) float32 -9.001 -8.999 -8.996 -8.993 ... -5.507 -5.504 -5.501
Data variables:
    CHL      (time, lat, lon) float32 ...

ds2

<xarray.Dataset>
Dimensions:  (time: 1, lat: 852, lon: 1168)
Coordinates:
  * time     (time) datetime64[ns] 2021-11-23
  * lat      (lat) float32 35.0 35.0 35.01 35.01 35.01 ... 37.29 37.29 37.3 37.3
  * lon      (lon) float32 -5.501 -5.498 -5.494 -5.491 ... -1.507 -1.503 -1.5
Data variables:
    CHL      (time, lat, lon) float32 ...

然后我使用:

ds3 = xr.merge([ds1,ds2])

它适用于维度,但我的变量 CHL 变为 nan:

<xarray.Dataset>
Dimensions:  (lat: 1887, lon: 2513, time: 1)
Coordinates:
  * lat      (lat) float64 35.0 35.0 35.0 35.0 35.01 ... 37.69 37.69 37.7 37.7
  * lon      (lon) float64 -9.001 -8.999 -8.996 -8.993 ... -1.507 -1.503 -1.5
  * time     (time) datetime64[ns] 2021-11-23
Data variables:
    CHL      (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan

所以当我绘制这个数据集时,我得到以下结果:

我假设那些白色条纹是由变量 CHL 变为 nan...

对可能发生的事情有任何想法吗?谢谢!

【问题讨论】:

也许 NaN 值是原始数据集中的缺失值? 【参考方案1】:

我不认为任何值变成 NaN。相反,我认为纬度坐标只是不同。因为你做了一个外连接(xr.merge 的默认值),xarray 必须在没有关于值的信息的地方填充矩阵。 fill_value 的默认值似乎是 NaN。 所以问题是,您希望这些地点的价值是多少? 一种可能性是通过插值填充缺失的位置。在多个维度上,这可能很棘手,但据我所知,您只是将两个图像彼此相邻放置,lon 维度中没有重叠。 在这种情况下,xarray 可以让您轻松插入 lat 维度:

ds3["CHL"].interpolate_na(dim="lat", method="linear")

【讨论】:

以上是关于将数据集与 xarray 合并使变量为 nan的主要内容,如果未能解决你的问题,请参考以下文章

xarray中的查找表?

SSRS 2012将数据集与分组合并

Xarray合并两个具有不同维度长度的hdf5文件

Python气象数据处理进阶之Xarray(5):数据整合(分组,合并...)

将 70 个 netCDF 文件与 xarray 合并

使用 xarray 选择所有坐标值