如何正确判断NumPy掩码数组中显示为--的掩码值?
解决掩码数组元素的判断问题
你代码里的问题在于:打印时显示的--只是numpy掩码数组的可视化格式,并不是元素实际存储的值,所以直接用a[i] == "--"肯定匹配不到。
下面给你两种符合需求的逐个判断方法:
方法1:使用ma.is_masked()函数
这个函数专门用来判断单个元素是否被掩码,用法直接明了:
import numpy as np import numpy.ma as ma x = np.array([1,2,3,4,5]) a = ma.masked_array(x, mask=[0, 0, 0, 1, 0]) for i in range(5): if ma.is_masked(a[i]): print("a[{0:d}] is masked value".format(i))
方法2:直接访问掩码数组的mask属性
掩码数组的mask本身就是一个布尔数组,对应位置为True就表示该元素被掩码:
import numpy as np import numpy.ma as ma x = np.array([1,2,3,4,5]) a = ma.masked_array(x, mask=[0, 0, 0, 1, 0]) for i in range(5): if a.mask[i]: print("a[{0:d}] is masked value".format(i))
这两种方法都不需要转换整个数组,完全满足你逐个判断的需求。
内容的提问来源于stack exchange,提问作者Redshoe
相关产品推荐
相关产品推荐

