【发布时间】:2018-08-17 14:28:34
【问题描述】:
我正在使用xarray.open_mfdataset() 函数读取多个 netCDF 格式的数据文件(WRF 模型输出文件)。我正在阅读和取消各种变量,例如变量QVAPOR、U 和V resp。我正在使用以下代码读取 netCDF 变量并计算结果变量 UQ。
import xarray as xr
def desta_var(pp,var):
flnm = xr.open_mfdataset(pp)
if var=="U":
U1 = (flnm.variables[var])
U = 0.5*(U1[:,:,:,0:-1] + U1[:,:,:,1:] )
del U1
return U
elif var=="V":
V1 = (flnm.variables[var])
V=0.5*(V1[:,:,0:-1,:] + V1[:,:,1:,:])
del V1
return V
else:
W1 = (flnm.variables[var])
W=0.5*(W1[:,0:-1,:,:] + W1[:,1:,:,:])
del W1
return W
U=desta_var('./WRF_3D_2005_*.nc','U')
V=desta_var('./WRF_3D_2005_*.nc','V')
flnm=xr.open_mfdataset('./WRF_3D_2005_*.nc')
QV = flnm.QVAPOR
UQ = U*QV
使用上述代码获得的变量的维度和形状:
风变量的维度例如。 U,它的形状是
Times, lev, y, x_2 其形状为 (1186, lev: 36, y: 699, x_2: 639)
湿度变量的维度 Ex。 QVAPOR,它的形状是
Times, lev, y, x 其形状为 (1186, lev: 36, y: 699, x: 639)
U 和 QVAPOR 相乘后;我计算UQ=U*QVAPOR。 UQ的尺寸和形状是
Times, lev, y, x_2, x and shape is (Times: 1186, lev: 36, y: 699, x_2: 639, x: 639)
所以问题如下:
我无法获得正确的尺寸。 UQ 的正确尺寸应该是 Times, lev, y, x。任何人都可以帮助我如何将 xarray 数据集与不同的维度名称相乘。
我不确定为什么我会得到 5 维的 UQ 变量,而 U 和 QVAPOR 都是 4 维。
【问题讨论】:
-
您很难判断哪里出了问题,因为我们看不到 U 或 QV 的尺寸。我建议用最小、完整和可验证的问题来编辑您的问题:stackoverflow.com/help/mcve
-
@jhamman .. 谢谢你的建议。我已经对问题进行了更改。我试图让问题尽可能简短。
标签: python netcdf python-xarray xarray