fourier_shift#
- scipy.ndimage.fourier_shift(input, shift, n=-1, axis=-1, output=None)[source]#
Multidimensional Fourier shift filter.
The array is multiplied with the Fourier transform of a shift operation.
- Parameters:
- inputarray_like
The input array.
- shiftfloat or sequence
The size of the box used for filtering. If a float,
shift
is the same for all axes. If a sequence,shift
has to contain one value for each axis.- nint, optional
If n is negative (default), then the input is assumed to be the result of a complex fft. If n is larger than or equal to zero, the input is assumed to be the result of a real fft, and n gives the length of the array before transformation along the real transform direction.
- axisint, optional
The axis of the real transform.
- outputndarray, optional
If given, the result of shifting the input is placed in this array.
- Returns:
- fourier_shiftndarray
The shifted input.
Notes
Array API Standard Support
fourier_shift
has 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=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
>>> from scipy import ndimage, datasets >>> import matplotlib.pyplot as plt >>> import numpy.fft >>> fig, (ax1, ax2) = plt.subplots(1, 2) >>> plt.gray() # show the filtered result in grayscale >>> ascent = datasets.ascent() >>> input_ = numpy.fft.fft2(ascent) >>> result = ndimage.fourier_shift(input_, shift=200) >>> result = numpy.fft.ifft2(result) >>> ax1.imshow(ascent) >>> ax2.imshow(result.real) # the imaginary part is an artifact >>> plt.show()