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_filterhas experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variableSCIPY_ARRAY_API=1and 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]])