# jax.numpy.convolve¶

`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.

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

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

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

‘full’:

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.

’same’:

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

’valid’:

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.

Returns

out – Discrete, linear convolution of a and v.

Return type

ndarray

References

1

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