scipy.signal.

order_filter#

scipy.signal.order_filter(a, domain, rank)[source]#

Perform an order filter on an N-D array.

Perform an order filter on the array in. The domain argument acts as a mask centered over each pixel. The non-zero elements of domain are used to select elements surrounding each input pixel which are placed in a list. The list is sorted, and the output for that pixel is the element corresponding to rank in the sorted list.

Parameters:
andarray

The N-dimensional input array.

domainarray_like

A mask array with the same number of dimensions as a. Each dimension should have an odd number of elements.

rankint

A non-negative integer which selects the element from the sorted list (0 corresponds to the smallest element, 1 is the next smallest element, etc.).

Returns:
outndarray

The results of the order filter in an array with the same shape as a.

Notes

Array API Standard Support

order_filter has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

Library

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

⚠️ no JIT

Dask

⚠️ computes graph

n/a

See Support for the array API standard for more information.

Examples

>>> import numpy as np
>>> from scipy import signal
>>> x = np.arange(25).reshape(5, 5)
>>> domain = np.identity(3)
>>> x
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> signal.order_filter(x, domain, 0)
array([[  0,   0,   0,   0,   0],
       [  0,   0,   1,   2,   0],
       [  0,   5,   6,   7,   0],
       [  0,  10,  11,  12,   0],
       [  0,   0,   0,   0,   0]])
>>> signal.order_filter(x, domain, 2)
array([[  6,   7,   8,   9,   4],
       [ 11,  12,  13,  14,   9],
       [ 16,  17,  18,  19,  14],
       [ 21,  22,  23,  24,  19],
       [ 20,  21,  22,  23,  24]])