numpy.ma.array#

ma.array(data, dtype=None, copy=False, order=None, mask=np.False_, fill_value=None, keep_mask=True, hard_mask=False, shrink=True, subok=True, ndmin=0)[源代码]#

一个可能包含掩码值的数组类。

值为 True 的掩码值将相应元素从任何计算中排除。

构造函数

x = MaskedArray(data, mask=nomask, dtype=None, copy=False, subok=True,
                ndmin=0, fill_value=None, keep_mask=True, hard_mask=None,
                shrink=True, order=None)
参数:
dataarray_like

输入数据。

masksequence, optional

掩码。必须可转换为与 data 形状相同的布尔值数组。True 表示已掩码(即无效)数据。

dtypedtype, optional

输出的数据类型。如果 dtype 为 None,则使用数据参数的类型 (data.dtype)。如果 dtype 不为 None 且与 data.dtype 不同,则会执行复制操作。

copybool, optional

是否复制输入数据 (True),还是改为使用引用。默认为 False。

subokbool, optional

是否尽可能返回 MaskedArray 的子类 (True) 还是返回普通的 MaskedArray。默认为 True。

ndminint, optional

最小维度数。默认为 0。

fill_valuescalar, optional

必要时用于填充掩码值的值。如果为 None,则使用基于数据类型的默认值。

keep_maskbool, optional

是否将 mask 与输入数据的掩码(如果有)组合 (True),还是仅将 mask 用于输出 (False)。默认为 True。

hard_maskbool, optional

是否使用硬掩码。使用硬掩码时,无法取消掩码值。默认为 False。

shrinkbool, optional

是否强制压缩空掩码。默认为 True。

order{‘C’, ‘F’, ‘A’}, optional

指定数组的顺序。如果 order 为 ‘C’,则数组将按 C-contiguous 顺序排列(最后一个索引变化最快)。如果 order 为 ‘F’,则返回的数组将按 Fortran-contiguous 顺序排列(第一个索引变化最快)。如果 order 为 ‘A’(默认),则返回的数组可能按任何顺序排列(C-contiguous、Fortran-contiguous 或甚至是不连续的),除非需要复制,在这种情况下它将是 C-contiguous 的。

示例

>>> import numpy as np

可以使用与 data 形状相同的布尔值数组来初始化 mask

>>> data = np.arange(6).reshape((2, 3))
>>> np.ma.MaskedArray(data, mask=[[False, True, False],
...                               [False, False, True]])
masked_array(
  data=[[0, --, 2],
        [3, 4, --]],
  mask=[[False,  True, False],
        [False, False,  True]],
  fill_value=999999)

或者,可以通过传入一个标量布尔值,将 mask 初始化为与 data 形状相同的同质布尔数组。

>>> np.ma.MaskedArray(data, mask=False)
masked_array(
  data=[[0, 1, 2],
        [3, 4, 5]],
  mask=[[False, False, False],
        [False, False, False]],
  fill_value=999999)
>>> np.ma.MaskedArray(data, mask=True)
masked_array(
  data=[[--, --, --],
        [--, --, --]],
  mask=[[ True,  True,  True],
        [ True,  True,  True]],
  fill_value=999999,
  dtype=int64)

注意

对于使用标量布尔值初始化 mask,推荐的做法是使用 True/False,而不是 np.True_/np.False_。原因是 nomask 在内部表示为 np.False_

>>> np.False_ is np.ma.nomask
True