Skip to main content
`Ctrl`+`K`

# numpy.ma.masked_where

ma.masked_where(condition, a, copy=True)

  Mask an array where a condition is met.

  Return a as an array masked where condition is True. Any masked values of a or condition are also masked in the output.

  Parameters:
    condition array_like

      Masking condition. When condition tests floating point values for equality, consider using `masked_values` instead.

    a array_like

      Array to mask.

    copy bool

      If True (default) make a copy of a in the result. If False modify a in place and return a view.

  Returns:
    result MaskedArray

      The result of masking a where condition is True.

  See also

  `masked_values`

    Mask using floating point equality.

  `masked_equal`

    Mask where equal to a given value.

  `masked_not_equal`

    Mask where not equal to a given value.

  `masked_less_equal`

    Mask where less than or equal to a given value.

  `masked_greater_equal`

    Mask where greater than or equal to a given value.

  `masked_less`

    Mask where less than a given value.

  `masked_greater`

    Mask where greater than a given value.

  `masked_inside`

    Mask inside a given interval.

  `masked_outside`

    Mask outside a given interval.

  `masked_invalid`

    Mask invalid values (NaNs or infs).

  Examples

      >>> import numpy as np
      >>> import numpy.ma as ma
      >>> a = np.arange(4)
      >>> a
      array([0, 1, 2, 3])
      >>> ma.masked_where(a <= 2, a)
      masked_array(data=[--, --, --, 3],
                   mask=[ True,  True,  True, False],
             fill_value=999999)

  Mask array b conditional on a.

      >>> b = ['a', 'b', 'c', 'd']
      >>> ma.masked_where(a == 2, b)
      masked_array(data=['a', 'b', --, 'd'],
                   mask=[False, False,  True, False],
             fill_value='N/A',
                  dtype='<U1')

  Effect of the `copy` argument.

      >>> c = ma.masked_where(a <= 2, a)
      >>> c
      masked_array(data=[--, --, --, 3],
                   mask=[ True,  True,  True, False],
             fill_value=999999)
      >>> c[0] = 99
      >>> c
      masked_array(data=[99, --, --, 3],
                   mask=[False,  True,  True, False],
             fill_value=999999)
      >>> a
      array([0, 1, 2, 3])
      >>> c = ma.masked_where(a <= 2, a, copy=False)
      >>> c[0] = 99
      >>> c
      masked_array(data=[99, --, --, 3],
                   mask=[False,  True,  True, False],
             fill_value=999999)
      >>> a
      array([99,  1,  2,  3])

  When condition or a contain masked values.

      >>> a = np.arange(4)
      >>> a = ma.masked_where(a == 2, a)
      >>> a
      masked_array(data=[0, 1, --, 3],
                   mask=[False, False,  True, False],
             fill_value=999999)
      >>> b = np.arange(4)
      >>> b = ma.masked_where(b == 0, b)
      >>> b
      masked_array(data=[--, 1, 2, 3],
                   mask=[ True, False, False, False],
             fill_value=999999)
      >>> ma.masked_where(a == 3, b)
      masked_array(data=[--, 1, --, --],
                   mask=[ True, False,  True,  True],
             fill_value=999999)