pylops.Identity

class pylops.Identity(N, M=None, inplace=True, forceflat=None, dtype='float64', name='I')[source]

Identity operator.

Simply move model to data in forward model and viceversa in adjoint mode if \(M = N\). If \(M > N\) removes last \(M - N\) elements from model in forward and pads with \(0\) in adjoint. If \(N > M\) removes last \(N - M\) elements from data in adjoint and pads with \(0\) in forward.

Note that the identity operator can handle both 1d and nd arrays; in the case of nd arrays, all elements of N must be larger or equal than those of M (or all elements of M must be larger or equal than those of N).

Parameters:
Nint or tuple

Number of samples in data (and model, if M is not provided). If a tuple is provided, this is interpreted as the data (and model) are nd-arrays.

Mint or tuple, optional

Number of samples in model. If a tuple is provided, this is interpreted as the model is an nd-array. Note that when M is a tuple, N must be also a tuple with the same number of elements.

inplacebool, 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).

forceflatbool, optional

Added in version 2.2.0.

Force an array to be flattened after matvec and rmatvec. Note that this is only required when N and M are tuples (input and output arrays are nd-arrays).

dtypestr, optional

Type of elements in input array.

namestr, optional

Added in version 2.0.0.

Name of operator (to be used by pylops.utils.describe.describe)

Attributes:
dimstuple

Shape of the array after the adjoint, but before flattening.

For example, x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).

dimsdtuple

Shape of the array after the forward, but before flattening.

For example, y_reshaped = (Op * x.ravel()).reshape(Op.dimsd).

modestr

Operation mode: same for \(M = N\), model for \(N > M, and ``data`\) for \(M > N\).

shapetuple

Operator shape.

Raises:
ValueError
  • If M is a tuple with different number of elements of N

  • If N M are non-identical tuples and some values are largers in N and some in M

NotImplementedError

If N or M have type different from int or tuple/list

Notes

For \(M = N\), an Identity operator simply moves the model \(\mathbf{x}\) to the data \(\mathbf{y}\) in forward mode and viceversa in adjoint mode:

\[y_i = x_i \quad \forall i=1,2,\ldots,N\]

or in matrix form:

\[\mathbf{y} = \mathbf{I} \mathbf{x} = \mathbf{x}\]

and

\[\mathbf{x} = \mathbf{I} \mathbf{y} = \mathbf{y}\]

For \(M > N\), the Identity operator takes the first \(M\) elements of the model \(\mathbf{x}\) into the data \(\mathbf{y}\) in forward mode

\[y_i = x_i \quad \forall i=1,2,\ldots,N\]

and all the elements of the data \(\mathbf{y}\) into the first \(M\) elements of model in adjoint mode (other elements are O):

\[ \begin{align}\begin{aligned}x_i = y_i \quad \forall i=1,2,\ldots,M\\x_i = 0 \quad \forall i=M+1,\ldots,N\end{aligned}\end{align} \]

Methods

__init__(N[, M, inplace, forceflat, dtype, name])

adjoint()

apply_columns(cols)

Apply subset of columns of operator

cond([uselobpcg])

Condition number of linear operator.

conj()

Complex conjugate operator

div(y[, niter, densesolver])

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.

matmat(X)

Matrix-matrix multiplication.

matvec(x)

Matrix-vector multiplication.

reset_count()

Reset counters

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.

trace([neval, method, backend])

Trace of linear operator.

transpose()

Examples using pylops.Identity

Identity

Identity

Operators concatenation

Operators concatenation

Total Variation (TV) Regularization

Total Variation (TV) Regularization

Uniform Discrete Curvelet Transform

Uniform Discrete Curvelet Transform

04. Bayesian Inversion

04. Bayesian Inversion