PyWavelets documentation has moved to pywavelets.readthedocs.io. You will be automatically redirected there in 10 seconds.
Discrete Wavelet Transform (DWT)¶
Wavelet transform has recently become a very popular when it comes to analysis, denoising and compression of signals and images. This section describes functions used to perform single and multilevel Discrete Wavelet Transforms.
Single level dwt
¶

pywt.
dwt
(data, wavelet, mode='symmetric', axis=1)¶ Single level Discrete Wavelet Transform.
Parameters: data : array_like
Input signal
wavelet : Wavelet object or name
Wavelet to use
mode : str, optional
Signal extension mode, see Modes
axis: int, optional
Axis over which to compute the DWT. If not given, the last axis is used.
Returns: (cA, cD) : tuple
Approximation and detail coefficients.
Notes
Length of coefficients arrays depends on the selected mode. For all modes except periodization:
len(cA) == len(cD) == floor((len(data) + wavelet.dec_len  1) / 2)
For periodization mode (“per”):
len(cA) == len(cD) == ceil(len(data) / 2)
Examples
>>> import pywt >>> (cA, cD) = pywt.dwt([1, 2, 3, 4, 5, 6], 'db1') >>> cA array([ 2.12132034, 4.94974747, 7.77817459]) >>> cD array([0.70710678, 0.70710678, 0.70710678])
See the signal extension modes section for the list of
available options and the dwt_coeff_len()
function for information on
getting the expected result length.
The transform can be performed over one axis of multidimensional data. By default this is the last axis. For multidimensional transforms see the 2D transforms section.
Multilevel decomposition using wavedec
¶

pywt.
wavedec
(data, wavelet, mode='symmetric', level=None)¶ Multilevel 1D Discrete Wavelet Transform of data.
Parameters: data: array_like
Input data
wavelet : Wavelet object or name string
Wavelet to use
mode : str, optional
Signal extension mode, see Modes (default: ‘symmetric’)
level : int, optional
Decomposition level (must be >= 0). If level is None (default) then it will be calculated using the
dwt_max_level
function.Returns: [cA_n, cD_n, cD_n1, ..., cD2, cD1] : list
Ordered list of coefficients arrays where n denotes the level of decomposition. The first element (cA_n) of the result is approximation coefficients array and the following elements (cD_n  cD_1) are details coefficients arrays.
Examples
>>> from pywt import wavedec >>> coeffs = wavedec([1,2,3,4,5,6,7,8], 'db1', level=2) >>> cA2, cD2, cD1 = coeffs >>> cD1 array([0.70710678, 0.70710678, 0.70710678, 0.70710678]) >>> cD2 array([2., 2.]) >>> cA2 array([ 5., 13.])
Partial Discrete Wavelet Transform data decomposition downcoef
¶

pywt.
downcoef
(part, data, wavelet, mode='symmetric', level=1)¶ Partial Discrete Wavelet Transform data decomposition.
Similar to pywt.dwt, but computes only one set of coefficients. Useful when you need only approximation or only details at the given level.
Parameters: part : str
Coefficients type:
 ‘a’  approximations reconstruction is performed
 ‘d’  details reconstruction is performed
data : array_like
Input signal.
wavelet : Wavelet object or name
Wavelet to use
mode : str, optional
Signal extension mode, see Modes. Default is ‘symmetric’.
level : int, optional
Decomposition level. Default is 1.
Returns: coeffs : ndarray
1D array of coefficients.
See also
Maximum decomposition level  dwt_max_level
¶

pywt.
dwt_max_level
(data_len, filter_len)¶ Compute the maximum useful level of decomposition.
Parameters: data_len : int
Input data length.
filter_len : int
Wavelet filter length.
Returns: max_level : int
Maximum level.
Examples
>>> import pywt >>> w = pywt.Wavelet('sym5') >>> pywt.dwt_max_level(data_len=1000, filter_len=w.dec_len) 6 >>> pywt.dwt_max_level(1000, w) 6
Result coefficients length  dwt_coeff_len
¶

pywt.
dwt_coeff_len
(data_len, filter_len, mode='symmetric')¶ Returns length of dwt output for given data length, filter length and mode
Parameters: data_len : int
Data length.
filter_len : int
Filter length.
mode : str, optional (default: ‘symmetric’)
Signal extension mode, see Modes
Returns: len : int
Length of dwt output.
Notes
For all modes except periodization:
len(cA) == len(cD) == floor((len(data) + wavelet.dec_len  1) / 2)
for periodization mode (“per”):
len(cA) == len(cD) == ceil(len(data) / 2)
Based on the given input data length, Wavelet decomposition filter length
and signal extension mode, the dwt_coeff_len()
function
calculates the length of the resulting coefficients arrays that would be
created while performing dwt()
transform.
filter_len can be either an int or Wavelet
object for
convenience.