qiskit.quantum_info.Operator
class Operator(data, input_dims=None, output_dims=None)
Matrix operator class
This represents a matrix operator that will evolve()
a Statevector
by matrix-vector multiplication
and will evolve()
a DensityMatrix
by left and right multiplication
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
atol | The default absolute tolerance parameter for float comparisons. |
data | Return data. |
dim | Return tuple (input_shape, output_shape). |
num_qubits | Return the number of qubits if a N-qubit operator or None otherwise. |
qargs | Return the qargs for the operator. |
rtol | The 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
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
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
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
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
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.