Skip to main content
`Ctrl`+`K`
scipy.fft.

# fftshift

scipy.fft.fftshift(x, axes=None)

  Shift the zero-frequency component to the center of the spectrum.

  This function swaps half-spaces for all axes listed (defaults to all). Note that `y[0]` is the Nyquist component only if `len(x)` is even.

  Parameters:
    x array_like

      Input array.

    axes int or shape tuple, optional

      Axes over which to shift. Default is None, which shifts all axes.

  Returns:
    y ndarray

      The shifted array.

  See also

  `ifftshift`

    The inverse of `fftshift`.

  Notes

  Array API Standard Support

  `fftshift` 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 | ✅ | ✅
  Dask | ✅ | n/a

  > See Support for the array API standard for more information.

  Examples

      >>> import numpy as np
      >>> freqs = np.fft.fftfreq(10, 0.1)
      >>> freqs
      array([ 0.,  1.,  2., ..., -3., -2., -1.])
      >>> np.fft.fftshift(freqs)
      array([-5., -4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])

  Shift the zero-frequency component only along the second axis:

      >>> freqs = np.fft.fftfreq(9, d=1./9).reshape(3, 3)
      >>> freqs
      array([[ 0.,  1.,  2.],
             [ 3.,  4., -4.],
             [-3., -2., -1.]])
      >>> np.fft.fftshift(freqs, axes=(1,))
      array([[ 2.,  0.,  1.],
             [-4.,  3.,  4.],
             [-1., -3., -2.]])