Skip to main content
`Ctrl`+`K`

# numpy.ma.clip

ma.clip(a, a_min=<no value>, a_max=<no value>, out=None, *, min=<no value>, max=<no value>, fill_value=None, hardmask=False, **kwargs)

  Clip (limit) the values in an array.

  Given an interval, values outside the interval are clipped to the interval edges. For example, if an interval of `[0, 1]` is specified, values smaller than 0 become 0, and values larger than 1 become 1.

  Equivalent to but faster than `np.minimum(a_max, np.maximum(a, a_min))`.

  No check is performed to ensure `a_min < a_max`.

  Parameters:
    a array_like

      Array containing elements to clip.

    a_min, a_max array_like or None

      Minimum and maximum value. If `None`, clipping is not performed on the corresponding edge. If both `a_min` and `a_max` are `None`, the elements of the returned array stay the same. Both are broadcasted against `a`.

    out ndarray, optional

      The results will be placed in this array. It may be the input array for in-place clipping. out must be of the right shape to hold the output. Its type is preserved.

    min, max array_like or None

      Array API compatible alternatives for `a_min` and `a_max` arguments. Either `a_min` and `a_max` or `min` and `max` can be passed at the same time. Default: `None`.

      New in version 2.1.0.

    **kwargs

      For other keyword-only arguments, see the ufunc docs.

  Returns:
    clipped_array MaskedArray

      An array with the elements of a, but where values < a_min are replaced with a_min, and those > a_max with a_max.

  See also

  Output type determination

  Notes

  When a_min is greater than a_max, `clip` returns an array in which all values are equal to a_max, as shown in the second example.

  Examples

      >>> import numpy as np
      >>> a = np.arange(10)
      >>> a
      array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
      >>> np.clip(a, 1, 8)
      array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
      >>> np.clip(a, 8, 1)
      array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
      >>> np.clip(a, 3, 6, out=a)
      array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
      >>> a
      array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
      >>> a = np.arange(10)
      >>> a
      array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
      >>> np.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8)
      array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])