[英]Weird issue masking 3D arrays iteratively in Python loop
我有一个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
!
我一定缺少一些明显的错误...
我觉得我已经通过添加,它取代了循环的额外步骤解决了这个问题masked
的值np.NaN
使用ma.filled
( https://docs.scipy.org/doc/numpy/reference/routines.ma.html ):
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.