jax.numpy.convolve(a, v, mode='full', *, precision=None)[source]

Returns the discrete, linear convolution of two one-dimensional sequences.

LAX-backend implementation of convolve().

In addition to the original NumPy arguments listed below, also supports precision for extra control over matrix-multiplication precision on supported devices. precision may be set to None, which means default precision for the backend, a lax.Precision enum value (Precision.DEFAULT, Precision.HIGH or Precision.HIGHEST) or a tuple of two lax.Precision enums indicating separate precision for each argument.

Original docstring below.

The convolution operator is often seen in signal processing, where it models the effect of a linear time-invariant system on a signal 1. In probability theory, the sum of two independent random variables is distributed according to the convolution of their individual distributions.

If v is longer than a, the arrays are swapped before computation.

  • a ((N,) array_like) – First one-dimensional input array.

  • v ((M,) array_like) – Second one-dimensional input array.

  • mode ({'full', 'valid', 'same'}, optional) –


    By default, mode is ‘full’. This returns the convolution at each point of overlap, with an output shape of (N+M-1,). At the end-points of the convolution, the signals do not overlap completely, and boundary effects may be seen.


    Mode ‘same’ returns output of length max(M, N). Boundary effects are still visible.


    Mode ‘valid’ returns output of length max(M, N) - min(M, N) + 1. The convolution product is only given for points where the signals overlap completely. Values outside the signal boundary have no effect.


out – Discrete, linear convolution of a and v.

Return type




Wikipedia, “Convolution”, https://en.wikipedia.org/wiki/Convolution