【问题标题】:Merging datasets with xarray makes variables to be nan将数据集与 xarray 合并使变量为 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 值是原始数据集中的缺失值?

标签: python dataset netcdf python-xarray array-merge


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2021-10-08
    • 2023-01-07
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2020-02-17
    相关资源
    最近更新 更多