添加两个相同维度的 netcdf 文件时,Xarray 给出的结果形状错误

问题描述 投票:0回答:1

我有多个 NetCDF 数据集,其中包含一个名为 t2m 的变量,每个变量都有三个维度 - (经度:38,纬度:35,时间:1)。使用 xarray,我想添加数据集以获得每个地理单元格的变量总和。以下是 2 个数据集 i_january90 和 i_february89 的信息

i_january90 info

i_february89 info

但是,当我添加数据集时,结果输出; I,维度为(经度:38,纬度:35,时间:0)。

I info

下面是仅 2 个文件的示例代码,它给出了相同的结果:

import xarray as xr
import numpy as np

cd (Path to my drive working folder)

i_january90 = xr.open_dataset("i_january90.nc")
i_february89 = xr.open_dataset("i_february89.nc")

#Add the 2 files
I = i_january90+i_february89

两个文件具有相同的尺寸。文件的空间范围也相同。我确认每个(nan)中都缺少数据值,并尝试使用下面的代码来添加它们,但结果中的维度仍然是经度:38,纬度:35,时间:0。

I = xr.where(i_january90.notnull() & i_february89.notnull(), i_january90+i_february89, np.nan)

如果您对问题和可能的解决方案有任何想法,我们将不胜感激。谢谢

python python-xarray netcdf
1个回答
0
投票

如果您查看两个文件的时间坐标,我猜时间是不同的(一个反映它是一月文件,另一个反映它是二月文件)。当您添加时,xarray 仅在所有坐标匹配时才会值。这通常很有用,因为您通常不想添加不匹配的点,但在这种情况下它会导致问题。这样想——输出的时间坐标应该是多少?目前还不清楚,因为可能是一月或二月。

对于这种情况,一种解决方法是删除时间维度,然后添加。

jan_noTime = i_january90.isel({'time':0}).drop('time') 
feb_noTime = i_february89.isel({'time':0}).drop('time') 
janfeb_sum = jan_noTime + feb_noTime

我希望能回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.