code: def 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`.
  
      Examples
      --------
      >>> 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.]])
  
      """
      x = asarray(x)
      if axes is None:
          axes = tuple(range(x.ndim))
          shift = [dim // 2 for dim in x.shape]
      elif isinstance(axes, integer_types):
          shift = x.shape[axes] // 2
      else:
          shift = [x.shape[ax] // 2 for ax in axes]
  
      return roll(x, shift, axes)
  
imports: from numpy.core import integer, empty, arange, asarray, roll
  from numpy.core.overrides import array_function_dispatch, set_module
label_desc: Use image node_id 2 for calling a global function with example usage: fftshift(x, axes) and returns: roll