将数据集与 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的主要内容,如果未能解决你的问题,请参考以下文章