我有一个3D数组,包含10个世界的2D地图。我创建了一个海洋的面具,我正在尝试创建第二个数组,与我的第一个3D数组相同,但是每年都会掩盖海洋。我认为这应该有效:
SIF_year = np.ndarray((SIF_year0.shape))
for i in range(0,SIF_year0.shape[0]):
SIF_year[i,:,:] = np.ma.array(SIF_year0[i,:,:], mask = np.logical_not(mask_global_land))
其中SIF_year0
是初始3D数组,SIF_year
是已屏蔽的版本。但是,SIF_year
看起来就像SIF_year0
。有趣的是,如果我这样做:
SIF_year = np.ndarray((SIF_year0.shape))
for i in range(0,SIF_year0.shape[0]):
SIF_test = np.ma.array(SIF_year0[i,:,:], mask = np.logical_not(mask_global_land))
然后SIF_test
是我需要的蒙版2D数组。我已尝试将屏蔽数组保存到SIF_test
,然后将其重新保存到SIF_year[i,:,:]
,但SIF_year
再次看起来像SIF_year0
!
我一定有一些明显的错误......
答案 0 :(得分:0)
我想我已经通过在循环中添加一个额外步骤来解决问题,该步骤使用masked
np.NaN
ma.filled
替换SIF_year = np.ndarray((SIF_year0.shape))
for i in range(0,SIF_year0.shape[0]):
SIF_test = np.ma.array(SIF_year0[i,:,:], mask = np.logical_not(mask_global_land))
SIF_year[i,:,:] = np.ma.filled(SIF_test, np.nan)
{{1}}值:
{{1}}