The numpy.ma module

原文:https://docs.scipy.org/doc/numpy/reference/maskedarray.generic.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

Rationale

屏蔽数组是可能具有缺失或无效条目的数组。numpy.ma模块为numpy提供了几乎与工作相似的替换,支持带有掩码的数据数组。

What is a masked array?

在许多情况下,数据集可能由于无效数据的存在而不完整或受到污染。例如,传感器可能无法记录数据,或记录无效值。numpy.ma模块提供了一种方便的方法来解决这个问题,通过引入masked数组。

掩码数组是标准numpy.ndarray和掩码的组合。掩码是nomask,表示相关数组的值无效,或者为相关数组的每个元素确定该值是否有效的布尔数组。当掩码的元素为False时,关联数组的相应元素有效,称为未掩蔽。当掩码的元素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

The numpy.ma module

numpy.ma模块的主要特征是MaskedArray类,它是numpy.ndarray的子类。类,其属性和方法在MaskedArray class部分中有更详细的描述。

numpy.ma模块可用作numpy的补充:

>>> import numpy as np
>>> import numpy.ma as ma

要创建一个具有第二个元素无效的数组,我们将:

>>> y = ma.array([1, 2, 3], mask = [0, 1, 0])

要创建一个蒙版的数组,其中所有接近1.e20的值都是无效的,我们会这样做:

>>> z = masked_values([1.0, 1.e20, 3.0, 4.0], 1.e20)

有关屏蔽数组的创建方法的完整讨论,请参见Constructing masked arrays一节。