Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK. Go to the latest version

qiskit.quantum_info.Operator

class Operator(data, input_dims=None, output_dims=None)

GitHub

Matrix operator class

This represents a matrix operator MM that will evolve() a Statevector ψ|\psi\rangle by matrix-vector multiplication

ψMψ,|\psi\rangle \mapsto M|\psi\rangle,

and will evolve() a DensityMatrix ρ\rho by left and right multiplication

ρMρM.\rho \mapsto M \rho M^\dagger.

Initialize an operator object.

Parameters

  • **(**QuantumCircuit or (data) – Instruction or BaseOperator or matrix): data to initialize operator.
  • input_dims (tuple) – the input subsystem dimensions. [Default: None]
  • output_dims (tuple) – the output subsystem dimensions. [Default: None]

Raises

QiskitError – if input data cannot be initialized as an operator.

Additional Information:

If the input or output dimensions are None, they will be automatically determined from the input data. If the input data is a Numpy array of shape (2**N, 2**N) qubit systems will be used. If the input operator is not an N-qubit operator, it will assign a single subsystem with dimension specified by the shape of the input.

__init__

__init__(data, input_dims=None, output_dims=None)

Initialize an operator object.

Parameters

  • **(**QuantumCircuit or (data) – Instruction or BaseOperator or matrix): data to initialize operator.
  • input_dims (tuple) – the input subsystem dimensions. [Default: None]
  • output_dims (tuple) – the output subsystem dimensions. [Default: None]

Raises

QiskitError – if input data cannot be initialized as an operator.

Additional Information:

If the input or output dimensions are None, they will be automatically determined from the input data. If the input data is a Numpy array of shape (2**N, 2**N) qubit systems will be used. If the input operator is not an N-qubit operator, it will assign a single subsystem with dimension specified by the shape of the input.


Methods

__init__(data[, input_dims, output_dims])Initialize an operator object.
add(other)Return the linear operator self + other.
adjoint()Return the adjoint of the operator.
compose(other[, qargs, front])Return the composed operator.
conjugate()Return the conjugate of the operator.
copy()Make a deep copy of current operator.
dot(other[, qargs])Return the right multiplied operator self * other.
equiv(other[, rtol, atol])Return True if operators are equivalent up to global phase.
expand(other)Return the tensor product operator other ⊗ self.
from_label(label)Return a tensor product of single-qubit operators.
input_dims([qargs])Return tuple of input dimension for specified subsystems.
is_unitary([atol, rtol])Return True if operator is a unitary matrix.
multiply(other)Return the linear operator other * self.
output_dims([qargs])Return tuple of output dimension for specified subsystems.
power(n)Return the matrix power of the operator.
reshape([input_dims, output_dims])Return a shallow copy with reshaped input and output subsystem dimensions.
set_atol(value)Set the class default absolute tolerance parameter for float comparisons.
set_rtol(value)Set the class default relative tolerance parameter for float comparisons.
subtract(other)Return the linear operator self - other.
tensor(other)Return the tensor product operator self ⊗ other.
to_instruction()Convert to a UnitaryGate instruction.
to_operator()Convert operator to matrix operator class
transpose()Return the transpose of the operator.

Attributes

atolThe default absolute tolerance parameter for float comparisons.
dataReturn data.
dimReturn tuple (input_shape, output_shape).
num_qubitsReturn the number of qubits if a N-qubit operator or None otherwise.
qargsReturn the qargs for the operator.
rtolThe relative tolerance parameter for float comparisons.

add

add(other)

Return the linear operator self + other.

DEPRECATED: use operator + other instead.

Parameters

other (BaseOperator) – an operator object.

Returns

the operator self + other.

Return type

BaseOperator

adjoint

adjoint()

Return the adjoint of the operator.

atol

The default absolute tolerance parameter for float comparisons.

compose

compose(other, qargs=None, front=False)

Return the composed operator.

Parameters

  • other (Operator) – an operator object.
  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems [default: None].
  • front (bool) – If True compose using right operator multiplication, instead of left multiplication [default: False].

Returns

The operator self @ other.

Return type

Operator

Raises

QiskitError – if operators have incompatible dimensions for composition.

Additional Information:

Composition (@) is defined as left matrix multiplication for matrix operators. That is that A @ B is equal to B * A. Setting front=True returns right matrix multiplication A * B and is equivalent to the dot() method.

conjugate

conjugate()

Return the conjugate of the operator.

copy

copy()

Make a deep copy of current operator.

data

Return data.

dim

Return tuple (input_shape, output_shape).

dot

dot(other, qargs=None)

Return the right multiplied operator self * other.

Parameters

  • other (Operator) – an operator object.
  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems [default: None].

Returns

The operator self * other.

Return type

Operator

Raises

QiskitError – if other cannot be converted to an Operator or has incompatible dimensions.

equiv

equiv(other, rtol=None, atol=None)

Return True if operators are equivalent up to global phase.

Parameters

  • other (Operator) – an operator object.
  • rtol (float) – relative tolerance value for comparison.
  • atol (float) – absolute tolerance value for comparison.

Returns

True if operators are equivalent up to global phase.

Return type

bool

expand

expand(other)

Return the tensor product operator other ⊗ self.

Parameters

other (Operator) – an operator object.

Returns

the tensor product operator other ⊗ self.

Return type

Operator

Raises

QiskitError – if other cannot be converted to an operator.

from_label

classmethod from_label(label)

Return a tensor product of single-qubit operators.

Parameters

label (string) – single-qubit operator string.

Returns

The N-qubit operator.

Return type

Operator

Raises

QiskitError – if the label contains invalid characters, or the length of the label is larger than an explicitly specified num_qubits.

Additional Information:

The labels correspond to the single-qubit matrices: ‘I’: [[1, 0], [0, 1]] ‘X’: [[0, 1], [1, 0]] ‘Y’: [[0, -1j], [1j, 0]] ‘Z’: [[1, 0], [0, -1]] ‘H’: [[1, 1], [1, -1]] / sqrt(2) ‘S’: [[1, 0], [0 , 1j]] ‘T’: [[1, 0], [0, (1+1j) / sqrt(2)]] ‘0’: [[1, 0], [0, 0]] ‘1’: [[0, 0], [0, 1]] ‘+’: [[0.5, 0.5], [0.5 , 0.5]] ‘-’: [[0.5, -0.5], [-0.5 , 0.5]] ‘r’: [[0.5, -0.5j], [0.5j , 0.5]] ‘l’: [[0.5, 0.5j], [-0.5j , 0.5]]

input_dims

input_dims(qargs=None)

Return tuple of input dimension for specified subsystems.

is_unitary

is_unitary(atol=None, rtol=None)

Return True if operator is a unitary matrix.

multiply

multiply(other)

Return the linear operator other * self.

DEPRECATED: use other * operator instead.

Parameters

other (complex) – a complex number.

Returns

the linear operator other * self.

Return type

BaseOperator

Raises

NotImplementedError – if subclass does not support multiplication.

num_qubits

Return the number of qubits if a N-qubit operator or None otherwise.

output_dims

output_dims(qargs=None)

Return tuple of output dimension for specified subsystems.

power

power(n)

Return the matrix power of the operator.

Parameters

n (int) – the power to raise the matrix to.

Returns

the n-times composed operator.

Return type

BaseOperator

Raises

QiskitError – if the input and output dimensions of the operator are not equal, or the power is not a positive integer.

qargs

Return the qargs for the operator.

reshape

reshape(input_dims=None, output_dims=None)

Return a shallow copy with reshaped input and output subsystem dimensions.

Arg:

input_dims (None or tuple): new subsystem input dimensions.

If None the original input dims will be preserved [Default: None].

output_dims (None or tuple): new subsystem output dimensions.

If None the original output dims will be preserved [Default: None].

Returns

returns self with reshaped input and output dimensions.

Return type

BaseOperator

Raises

QiskitError – if combined size of all subsystem input dimension or subsystem output dimensions is not constant.

rtol

The relative tolerance parameter for float comparisons.

set_atol

classmethod set_atol(value)

Set the class default absolute tolerance parameter for float comparisons.

DEPRECATED: use operator.atol = value instead

set_rtol

classmethod set_rtol(value)

Set the class default relative tolerance parameter for float comparisons.

DEPRECATED: use operator.rtol = value instead

subtract

subtract(other)

Return the linear operator self - other.

DEPRECATED: use operator - other instead.

Parameters

other (BaseOperator) – an operator object.

Returns

the operator self - other.

Return type

BaseOperator

tensor

tensor(other)

Return the tensor product operator self ⊗ other.

Parameters

other (Operator) – a operator subclass object.

Returns

the tensor product operator self ⊗ other.

Return type

Operator

Raises

QiskitError – if other cannot be converted to an operator.

to_instruction

to_instruction()

Convert to a UnitaryGate instruction.

to_operator

to_operator()

Convert operator to matrix operator class

transpose

transpose()

Return the transpose of the operator.

Was this page helpful?
Report a bug or request content on GitHub.