繁体   English   中英

在Python循环中迭代屏蔽3D数组的怪异问题

[英]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.filledhttps://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM