兩個數組的值我有兩個數據集mask
和precip_subset
。兩個數據集都以類似的方式創建的:如何乘具有不同的形狀
掩模:
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)
。每個數據集中的最後兩個元素分別代表緯度和經度。 precip_subset
中的第二個元素表示1月份的一天。
基本上,我想通過在31天的每個緯度/經度的的precip_subset
值在每個緯度/經度相乘的mask
值。的mask
的值是1
或0
,取決於如果緯度/經度是過水。我最終想要通過乘以零來「掩蓋」precip_subset
中的數值。
顯然,陣列的形狀是不同的。有誰知道我能做些什麼來實現我想做的事情?
編輯:我在想,也許利用for
循環,但我不知道如何構建。
你試過'面具* precip_subset'。 Numpy會播出這個,應該沒問題。在genereal廣播規則中查看[here](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)。 –
請儘量少做例子,就我所見,你的問題主要是關於乘兩個數組,我想我們甚至不必知道這些數組是如何構成的,以及這些數組是如何構建的 –