私は2つのデータセットmask
とprecip_subset
を持っています。両方のデータセットは、同様の方法で作成された:形状の異なる2つの配列の値を掛ける方法
マスク:
datapath = r"C:\Users\matth\Downloads\mask_global_0.25deg.nc"
f = Dataset(datapath)
print(f)
latbounds = [ -45 , -10 ]
lonbounds = [ 105, 160 ]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin(np.abs(lats - latbounds[0]))
latui = np.argmin(np.abs(lats - latbounds[1]))
# longitude lower and upper index
lonli = np.argmin(np.abs(lons - lonbounds[0]))
lonui = np.argmin(np.abs(lons - lonbounds[1]))
mask = f.variables['mask'][ lonli:lonui , latli:latui ]
precip_subset:
data_path = r"C:\Users\matth\Downloads\TRMM_3B42RT\3B42RT_Daily.201001.7.nc4"
f = Dataset(data_path)
latbounds = [ -45 , -10 ]
lonbounds = [ 105, 160 ]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin(np.abs(lats - latbounds[0]))
latui = np.argmin(np.abs(lats - latbounds[1]))
# longitude lower and upper index
lonli = np.argmin(np.abs(lons - lonbounds[0]))
lonui = np.argmin(np.abs(lons - lonbounds[1]))
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
各データセットの形状が(1, 220, 140)
と(1, 31, 220, 140)
です。各データセットの最後の2つの要素は、それぞれ緯度と経度を表します。 precip_subset
の2番目の要素は、1月の1日を表します。
基本的には、各緯度/経度でのmask
の値には、31日間の各緯度/経度でprecip_subset
という値を掛けたいと考えています。 mask
の値は、緯度/経度が水面上にあるかどうかによって、1
または0
のいずれかになります。私は最終的に水を超えている値をゼロで乗算することによってprecip_subset
の値を「隠す」ことを望む。明らかに、アレイの形状が異なる。私がやりたいことを達成するために何ができるのか誰にでも分かっていますか?
編集:おそらくfor
ループを利用していると考えていましたが、どのように構築するのか分かりません。
'mask * precip_subset'を試したことがありますか?ナンシーはこれを放送し、それはうまくいくはずです。ジェネラル放送ルールでの[here](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)を参照してください。 –
そして最小限の例を作ってください。あなたの質問が主に2つの配列を掛け合っていることがわかります。私は緯度と配列がどのように構築されているか知る必要はないと思います –