関数を使用して複数の netCDF 形式のデータ ファイル (WRF モデル出力ファイル) を読み込んでいますxarray.open_mfdataset()
。QVAPOR
Variable 、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
上記のコードを使用して取得した変数の次元と形状:
風変数の次元 Ex. U
そしてその形は
時間、lev、y、x_2、およびその形状は (1186、lev: 36、y: 699、x_2: 639) です。
水分変数の次元 Ex. QVAPOR
そしてその形は
時間、レフ、y、x、およびその形状は (1186、レフ: 36、y: 699、x: 639) です。
U
とを掛けた後QVAPOR
; を計算しUQ=U*QVAPOR
ます。の寸法と形状UQ
は
時間、lev、y、x_2、x、形状は (Times: 1186、lev: 36、y: 699、x_2: 639、x: 639)
したがって、問題は次のとおりです。
寸法を正しく取得できません。の正しい寸法はUQ
ですTimes, lev, y, x
。xarray データセットを異なる次元名で乗算する方法を教えてください。U と QVAPOR がそれぞれ 4 次元であるのに、5 次元の UQ 変数を取得する理由がわかりません。