NumPy参考 >数组对象 >Masked arrays > The numpy.ma module
在许多情况下,数据集可能不完整或被无效数据污染。例如,传感器可能无法记录数据或记录了无效值。该numpy.ma
模块通过引入屏蔽数组提供了解决此问题的便捷方法。
蒙版阵列是标准numpy.ndarray
和蒙版的组合。掩码可以是nomask
,指示没有关联数组的值无效,也可以是布尔数组,该布尔数组确定关联数组的每个元素的值是否有效。当mask的元素为时False
,关联数组的相应元素有效,并且被认为是未掩码的。当mask的元素为时
True
,关联数组的相应元素被称为被遮罩(无效)。
该软件包可确保在计算中不使用被屏蔽的条目。
作为说明,让我们考虑以下数据集:
>>> import numpy as np
>>> import numpy.ma as ma
>>> x = np.array([1, 2, 3, -1, 5])
我们希望将第四项标记为无效。最简单的方法是创建一个掩码数组:
>>> mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0])
现在,我们可以计算数据集的平均值,而无需考虑无效数据:
>>> mx.mean()
2.75
numpy.ma
模块¶numpy.ma
模块的主要特征是MaskedArray
类,它是的子类numpy.ndarray
。该类,其属性和方法在MaskedArray类部分中有更详细的描述
。
>>> import numpy as np
>>> import numpy.ma as ma
要创建第二个元素无效的数组,我们可以这样做:
>>> y = ma.array([1, 2, 3], mask = [0, 1, 0])
要创建一个掩码数组,其中所有接近1.e20的值都无效,我们可以这样做:
>>> z = ma.masked_values([1.0, 1.e20, 3.0, 4.0], 1.e20)
有关掩码数组的创建方法的完整讨论,请参见“ 构造掩码数组”一节。