# pylops.Restriction¶

class pylops.Restriction(M, iava, dims=None, dir=0, dtype='float64', inplace=True)[source]

Restriction (or sampling) operator.

Extract subset of values from input vector at locations iava in forward mode and place those values at locations iava in an otherwise zero vector in adjoint mode.

Parameters: M : int Number of samples in model. iava : Integer indices of available samples for data selection. dims : list Number of samples for each dimension (None if only one dimension is available) dir : int, optional Direction along which restriction is applied. dtype : str, optional Type of elements in input array. inplace : bool, optional Work inplace (True) or make a new copy (False). By default, data is a reference to the model (in forward) and model is a reference to the data (in adjoint).

pylops.signalprocessing.Interp
Interpolation operator

Notes

Extraction (or sampling) of a subset of $$N$$ values at locations iava from an input (or model) vector $$\mathbf{x}$$ of size $$M$$ can be expressed as:

$y_i = x_{l_i} \quad \forall i=1,2,...,N$

where $$\mathbf{l}=[l_1, l_2,..., l_N]$$ is a vector containing the indeces of the original array at which samples are taken.

Conversely, in adjoint mode the available values in the data vector $$\mathbf{y}$$ are placed at locations $$\mathbf{l}=[l_1, l_2,..., l_M]$$ in the model vector:

$x_{l_i} = y_i \quad \forall i=1,2,...,N$

and $$x_{j}=0 j \neq l_i$$ (i.e., at all other locations in input vector).

Attributes: shape : tuple Operator shape explicit : bool Operator contains a matrix that can be solved explicitly (True) or not (False)

Methods

 __init__(M, iava[, dims, dir, dtype, inplace]) Initialize this LinearOperator. adjoint() Hermitian adjoint. apply_columns(cols) Apply subset of columns of operator cond([uselobpcg]) Condition number of linear operator. conj() Complex conjugate operator div(y[, niter]) Solve the linear problem $$\mathbf{y}=\mathbf{A}\mathbf{x}$$. dot(x) Matrix-matrix or matrix-vector multiplication. eigs([neigs, symmetric, niter, uselobpcg]) Most significant eigenvalues of linear operator. mask(x) Apply mask to input signal returning a signal of same size with values at iava locations and 0 at other locations matmat(X) Matrix-matrix multiplication. matvec(x) Matrix-vector multiplication. rmatmat(X) Matrix-matrix multiplication. rmatvec(x) Adjoint matrix-vector multiplication. todense([backend]) Return dense matrix. toimag([forw, adj]) Imag operator toreal([forw, adj]) Real operator tosparse() Return sparse matrix. transpose() Transpose this linear operator.
mask(x)[source]

Apply mask to input signal returning a signal of same size with values at iava locations and 0 at other locations

Parameters: x : numpy.ndarray or cupy.ndarray Input array (can be either flattened or not) y : numpy.ma.core.MaskedArray Masked array.