# scipy.fftpack.dctn

scipy.fftpack.dctn(x, type=2, shape=None, axes=None, norm=None, overwrite_x=False)

  Return multidimensional Discrete Cosine Transform along the specified axes.

  Parameters:
    x array_like

      The input array.

    type{1, 2, 3, 4}, optional

      Type of the DCT (see Notes). Default type is 2.

    shape int or array_like of ints or None, optional

      The shape of the result. If both shape and axes (see below) are None, shape is `x.shape`; if shape is None but axes is not None, then shape is `numpy.take(x.shape, axes, axis=0)`. If `shape[i] > x.shape[i]`, the ith dimension is padded with zeros. If `shape[i] < x.shape[i]`, the ith dimension is truncated to length `shape[i]`. If any element of shape is -1, the size of the corresponding dimension of x is used.

    axes int or array_like of ints or None, optional

      Axes along which the DCT is computed. The default is over all axes.

    norm{None, ‘ortho’}, optional

      Normalization mode (see Notes). Default is None.

    overwrite_x bool, optional

      If True, the contents of x can be destroyed; the default is False.

  Returns:
    y ndarray of real

      The transformed input array.

  See also

  `idctn`

    Inverse multidimensional DCT

  Notes

  For full details of the DCT types and normalization modes, as well as references, see `dct`.

  Examples

      >>> import numpy as np
      >>> from scipy.fftpack import dctn, idctn
      >>> rng = np.random.default_rng()
      >>> y = rng.standard_normal((16, 16))
      >>> np.allclose(y, idctn(dctn(y, norm='ortho'), norm='ortho'))
      True