Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Bases: BasePauli, LinearMixin, GroupMixin

Lista de operadores de Pauli de N-qubit.

Esta clase es una representación eficiente de una lista de Pauli operadores. Soporta 1D numpy array indexing devolviendo un Pauli para índices enteros o un PauliList para índices slice o list.

Inicialización

Un objeto PauliList puede inicializarse de varias maneras.

PauliList(list[str])

donde las cadenas tienen la misma representación con Pauli.

PauliList(Pauli) and PauliList(list[Pauli])

donde Pauli es Pauli.

PauliList.from_symplectic(z, x, phase)

donde z y x son booleanos bidimensionales numpy.ndarrays y phase es un número entero en [0, 1, 2, 3].

Por ejemplo:

import numpy as np

from qiskit.quantum_info import Pauli, PauliList

# 1. init from list[str]
pauli_list = PauliList(["II", "+ZI", "-iYY"])
print("1. ", pauli_list)

pauli1 = Pauli("iXI")
pauli2 = Pauli("iZZ")

# 2. init from Pauli
print("2. ", PauliList(pauli1))

# 3. init from list[Pauli]
print("3. ", PauliList([pauli1, pauli2]))

# 4. init from np.ndarray
z = np.array([[True, True], [False, False]])
x = np.array([[False, True], [True, False]])
phase = np.array([0, 1])
pauli_list = PauliList.from_symplectic(z, x, phase)
print("4. ", pauli_list)
1.  ['II', 'ZI', '-iYY']
2.  ['iXI']
3.  ['iXI', 'iZZ']
4.  ['YZ', '-iIX']

Acceso a los datos

Se puede acceder a los Paulis individuales y actualizarlos mediante el operador [] , que acepta enteros, listas o rebanadas para seleccionar subconjuntos de PauliList. Si se da un número entero, devuelve Pauli no PauliList.

pauli_list = PauliList(["XX", "ZZ", "IZ"])
print("Integer: ", repr(pauli_list[1]))
print("List: ", repr(pauli_list[[0, 2]]))
print("Slice: ", repr(pauli_list[0:2]))
Integer:  Pauli('ZZ')
List:  PauliList(['XX', 'IZ'])
Slice:  PauliList(['XX', 'ZZ'])

Iteración

Las filas de la tabla Pauli pueden iterarse como una lista. La iteración también se puede realizar utilizando la etiqueta o la representación matricial de cada fila mediante los botones label_iter() y matrix_iter() .

Inicialice la página PauliList.

Parámetros

data (Pauli orlist) – datos de entrada para Paulis. Si la entrada es una lista, cada elemento de la lista debe ser un objeto Pauli o una cadena Pauli.

Eleva

QiskitError - si la matriz de entrada tiene una forma no válida.

Información adicional:

La matriz de entrada no se copia, por lo que varias tablas Pauli pueden compartir la misma matriz subyacente.


Atributos

dim

Devuelve una tupla (forma_entrada, forma_salida).

num_qubits

Devuelve el número de qubits si es un operador N-qubit o Ninguno en caso contrario.

phase

Devuelve el exponente de fase de PauliList.

qargs

Devuelve los qargs para el operador.

settings

Devuelve los ajustes.

shape

La forma completa del array()

size

El número de filas Pauli en la tabla.

x

La matriz x para la representación simpléctica.

z

La matriz z para la representación simpléctica.


Métodos

adjoint

adjoint()

GitHub

Devuelve el adjunto de cada Pauli de la lista.

anticommutes

anticommutes(other, qargs=None)

GitHub

Devuelve un valor True si el otro operador de Pauli se anticomuta con este.

Parámetros

  • other (PauliList) – otro operador de PauliList.
  • qargs (list) – qubits a los que aplicar el producto punto (por defecto: None).

Devuelve

True si los Paulis no viajan, False si viajan.

Tipo de retorno

bool

anticommutes_with_all

anticommutes_with_all(other)

GitHub

Devuelve los índices de las filas que anticomutan con la otra lista de Pauli.

Si other es una lista Pauli de varias filas, el vector devuelto indexa las filas de la actual PauliList que anticonmutan con todas las Paulis de la otra. Si ninguna fila cumple la condición, la matriz devuelta estará vacía.

Parámetros

other (PauliList) – una sola fila Pauli o varias PauliList.

Devuelve

matriz de índices de las filas anticonmutación.

Tipo de retorno

matriz

argsort

argsort(weight=False, phase=False)

GitHub

Devuelve índices para ordenar las filas de la tabla.

El método de ordenación por defecto es la ordenación lexicográfica por número de qubit. Utilizando el peso kwarg, la salida puede ordenarse adicionalmente por el número de términos no idénticos en el Pauli, donde el conjunto de todos los Paulis de un peso dado siguen ordenados lexicográficamente.

Parámetros

  • weight (bool) – Opcionalmente ordenar por peso si True (Por defecto: False).
  • phase (bool) – Opcionalmente, ordenar por fase antes que por peso o por orden (Predeterminado: False).

Devuelve

los índices para ordenar la tabla.

Tipo de retorno

matriz

commutes

commutes(other, qargs=None)

GitHub

Devuelve True para cada Pauli que conmuta con otro.

Parámetros

  • other (PauliList) – otro operador de PauliList.
  • qargs (list) – qubits a los que aplicar el producto punto (por defecto: None).

Devuelve

True si Paulis conmute, False si anti-commute.

Tipo de retorno

bool

commutes_with_all

commutes_with_all(other)

GitHub

Devuelve índices de filas que conmutan other.

Si other es una lista Pauli de varias filas, el vector devuelto indexa las filas de la PauliList actual que conmutan con todas las Paulis de la otra. Si ninguna fila cumple la condición, la matriz devuelta estará vacía.

Parámetros

other (PauliList) – una sola fila Pauli o varias PauliList.

Devuelve

matriz de índices de las filas conmutadas.

Tipo de retorno

matriz

compose

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

GitHub

Devuelve la composición self∘other para cada Pauli de la lista.

Parámetros

  • other (PauliList) – otro PauliList.
  • qargs (None or list) – qubits a los que aplicar el producto punto (por defecto: None).
  • front (bool) – Si es True utiliza el método de composición por puntos [por defecto: False].
  • inplace (bool) – Si True se actualiza in situ (por defecto: False).

Devuelve

la lista de Paulis compuestos.

Tipo de retorno

PauliList

Eleva

QiskitError - si otro no se puede convertir a un PauliList, no tiene ni 1 ni el mismo número de Paulis que la lista actual, o tiene el número incorrecto de qubits para el qargs especificado.

conjugate

conjugate()

GitHub

Devuelve el conjugado de cada Pauli de la lista.

copy

copy()

GitHub

Realiza una copia en profundidad del operador actual.

delete

delete(ind, qubit=False)

GitHub

Devuelve una copia con las filas Pauli eliminadas de la tabla.

Al borrar qubits, el índice del qubit es el mismo que el índice de la columna de las matrices subyacentes X y Z .

Parámetros

  • ind (int orlist) – índice(s) a eliminar.
  • qubit (bool) – si True borrar columnas qubit, en caso contrario borrar filas Pauli (Por defecto: False).

Devuelve

la tabla resultante con las entradas eliminadas.

Tipo de retorno

PauliList

Eleva

QiskitError - si ind está fuera de los límites del tamaño de la matriz o del número de qubits.

dot

dot(other, qargs=None, inplace=False)

GitHub

Devuelve la composición other∘self para cada Pauli de la lista.

Parámetros

  • other (PauliList) – otro PauliList.
  • qargs (None or list) – qubits a los que aplicar el producto punto (por defecto: None).
  • inplace (bool) – Si es True se actualiza in situ (por defecto: False).

Devuelve

la lista de Paulis compuestos.

Tipo de retorno

PauliList

Eleva

QiskitError - si otro no se puede convertir a un PauliList, no tiene ni 1 ni el mismo número de Paulis que la lista actual, o tiene el número incorrecto de qubits para el qargs especificado.

equiv

equiv(other)

GitHub

Comparación por entradas de la equivalencia de Pauli hasta la fase global.

Parámetros

other (PauliList orPauli) – un objeto de comparación.

Devuelve

Una matriz de True o False para la equivalencia de entrada

de la tabla actual.

Tipo de retorno

np.ndarray

evolve

evolve(other, qargs=None, frame='h')

GitHub

Realiza la evolución de la imagen de Heisenberg (por defecto) o de Schrödinger del Pauli por un Clifford y devuelve el Pauli evolucionado.

La evolución de la imagen de Schrödinger puede elegirse pasando el parámetro frame='s'. Esta opción permite un cálculo más rápido.

La imagen de Heisenberg evoluciona a la de Pauli como P=C.P.CP^\prime = C^\dagger.P.C.

La imagen de Schrödinger evoluciona el Pauli como P=C.P.CP^\prime = C.P.C^\dagger.

Parámetros

  • other (Pauli orClifford orQuantumCircuit) – El operador Clifford para evolucionar.
  • qargs (list) – una lista de qubits a los que aplicar el Clifford.
  • frame (string) – 'h' para Heisenberg (por defecto) o 's' para el marco de Schrödinger.

Devuelve

el Pauli C.P.CC^\dagger.P.C (imagen de Heisenberg) o el Pauli C.P.CC.P.C^\dagger (imagen de Schrödinger).

Tipo de retorno

PauliList

Eleva

QiskitError - si el número Clifford de qubits y qargs no coinciden.

expand

expand(other)

GitHub

Devuelve el producto expandido de cada Pauli de la lista.

Parámetros

other (PauliList) – otro PauliList.

Devuelve

la lista del producto tensorial Paulis.

Tipo de retorno

PauliList

Eleva

QiskitError - si otro no se puede convertir en un PauliList, no tiene ni 1 ni el mismo número de Paulis que la lista actual.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

Construir un PauliList a partir de un dato simpléctico.

Parámetros

  • z (np.ndarray) – 2D boolean Numpy array.
  • x (np.ndarray) – 2D boolean Numpy array.
  • phase (np.ndarray or None) – 1D matriz de números enteros de Z_4.

Devuelve

el construido PauliList.

Tipo de retorno

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

Particionar un PauliList en conjuntos de cadenas Pauli conmutativas.

Parámetros

qubit_wise (bool) –

si la regla de conmutación se aplica a todo el operador o a cada qubit. Por ejemplo:

>>> from qiskit.quantum_info import PauliList
>>> op = PauliList(["XX", "YY", "IZ", "ZZ"])
>>> op.group_commuting()
[PauliList(['XX', 'YY']), PauliList(['IZ', 'ZZ'])]
>>> op.group_commuting(qubit_wise=True)
[PauliList(['XX']), PauliList(['YY']), PauliList(['IZ', 'ZZ'])]

Devuelve

Lista de PauliLists donde cada PauliList contiene operadores Pauli conmutantes.

Tipo de retorno

lista [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

Particionar un PauliList en conjuntos de cuerdas Pauli mutuamente conmutables en qubit.

Devuelve

Lista de PauliLists donde cada PauliList contiene operadores de Pauli conmutables.

Tipo de retorno

lista [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

Devuelve tupla de dimensión de entrada para subsistemas especificados.

insert

insert(ind, value, qubit=False)

GitHub

Inserta Paulis en la tabla.

Al insertar qubits, el índice del qubit es el mismo que el índice de la columna de las matrices subyacentes X y Z .

Parámetros

  • ind (int) – índice en el que insertar.
  • value (PauliList) – valores a insertar.
  • qubit (bool) – si True insertar columnas qubit, en caso contrario insertar filas Pauli (Por defecto: False).

Devuelve

la tabla resultante con las entradas insertadas.

Tipo de retorno

PauliList

Eleva

QiskitError - si el índice de inserción no es válido.

inverse

inverse()

GitHub

Devuelve la inversa de cada Pauli de la lista.

label_iter

label_iter()

GitHub

Devuelve un iterador de representación de etiquetas.

Se trata de un iterador perezoso que convierte cada fila en la etiqueta de cadena sólo a medida que se utiliza. Para convertir toda la tabla en etiquetas utilice el método to_labels() método.

Devuelve

objeto iterador de etiquetas para el PauliList.

Tipo de retorno

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

Devuelve un iterador de representación matricial.

Se trata de un iterador perezoso que convierte cada fila en la representación de la matriz de Pauli sólo a medida que se utiliza. Para convertir toda la tabla en matrices utilice el método to_matrix() método.

Parámetros

sparse (bool) – Devuelve matrices CSR dispersas si se especifica; Truede lo contrario, devuelve matrices de tipo Numpy (por defecto: False)

Devuelve

objeto iterador de matriz para el PauliList.

Tipo de retorno

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

Crea el gráfico de no conmutación de este PauliList.

Esto transforma el problema de agrupación de operadores de medición en un problema de coloreado de grafos. El grafo construido contiene un nodo por cada Pauli. Los nodos se conectarán para dos términos de Pauli cualesquiera que no conmuten.

Parámetros

qubit_wise (bool) – si la regla de conmutación se aplica a todo el operador o a cada qubit.

Devuelve

el grafo de no conmutación con nodos para cada Pauli y aristas

que indica una relación de no conmutación. Cada nodo contendrá el índice del término de Pauli al que corresponde en sus datos. Las aristas del gráfico no contienen datos.

Tipo de retorno

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

Devuelve tupla de dimensión de salida para subsistemas especificados.

power

power(n)

GitHub

Devuelve la composición de un operador consigo mismo n veces.

Parámetros

n (int) – el número de veces que se compone con uno mismo ( n>0 ).

Devuelve

el operador compuesto n veces.

Tipo de retorno

Clifford

Eleva

QiskitError - si las dimensiones de entrada y salida del operador no son iguales, o la potencia no es un entero positivo.

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

Devuelve una copia superficial con las dimensiones de los subsistemas de entrada y salida remodeladas.

Parámetros

  • input_dims (None or tuple) – nuevas dimensiones de entrada del subsistema. Si es Ninguno, se conservarán las atenuaciones de entrada originales [Por defecto: Ninguno].
  • output_dims (None or tuple) – nuevas dimensiones de salida del subsistema. Si es Ninguno, se conservarán las atenuaciones de salida originales. [Predeterminado: Ninguno].
  • num_qubits (None or int) – remodelar a un operador N-qubit [Por defecto: Ninguno].

Devuelve

devuelve self con las dimensiones de entrada y salida reformadas.

Tipo de retorno

BaseOperator

Eleva

QiskitError - si el tamaño combinado de todas las dimensiones de entrada del subsistema o las dimensiones de salida del subsistema no es constante.

sort

sort(weight=False, phase=False)

GitHub

Ordena las filas de la tabla.

El método de ordenación por defecto es la ordenación lexicográfica por número de qubit. Utilizando el peso kwarg, la salida puede ordenarse adicionalmente por el número de términos no idénticos en el Pauli, donde el conjunto de todos los Paulis de un peso dado siguen ordenados lexicográficamente.

Ejemplo

Considere la posibilidad de ordenar todos un orden aleatorio de todos los 2-qubit Paulis

from numpy.random import shuffle
from qiskit.quantum_info.operators import PauliList

# 2-qubit labels
labels = ['II', 'IX', 'IY', 'IZ', 'XI', 'XX', 'XY', 'XZ',
          'YI', 'YX', 'YY', 'YZ', 'ZI', 'ZX', 'ZY', 'ZZ']
# Shuffle Labels
shuffle(labels)
pt = PauliList(labels)
print('Initial Ordering')
print(pt)

# Lexicographic Ordering
srt = pt.sort()
print('Lexicographically sorted')
print(srt)

# Weight Ordering
srt = pt.sort(weight=True)
print('Weight sorted')
print(srt)
Initial Ordering
['YX', 'ZZ', 'XZ', 'YI', 'YZ', 'II', 'XX', 'XI', 'XY', 'YY', 'IX', 'IZ',
 'ZY', 'ZI', 'ZX', 'IY']
Lexicographically sorted
['II', 'IX', 'IY', 'IZ', 'XI', 'XX', 'XY', 'XZ', 'YI', 'YX', 'YY', 'YZ',
 'ZI', 'ZX', 'ZY', 'ZZ']
Weight sorted
['II', 'IX', 'IY', 'IZ', 'XI', 'YI', 'ZI', 'XX', 'XY', 'XZ', 'YX', 'YY',
 'YZ', 'ZX', 'ZY', 'ZZ']

Parámetros

  • weight (bool) – ordenar opcionalmente por peso si True (Por defecto: False).
  • phase (bool) – Opcionalmente, ordenar por fase antes que por peso o por orden (Predeterminado: False).

Devuelve

una copia ordenada de la tabla original.

Tipo de retorno

PauliList

tensor

tensor(other)

GitHub

Devuelve el producto tensorial con cada Pauli de la lista.

Parámetros

other (PauliList) – otro PauliList.

Devuelve

la lista del producto tensorial Paulis.

Tipo de retorno

PauliList

Eleva

QiskitError - si otro no se puede convertir en un PauliList, no tiene ni 1 ni el mismo número de Paulis que la lista actual.

to_labels

to_labels(array=False)

GitHub

Convierte un PauliList en una lista de etiquetas de cadena Pauli.

Para grandes PauliLists la conversión usando el kwarg array=True será más eficiente ya que asigna memoria para el array Numpy completo de etiquetas por adelantado.

Etiqueta
Symplectic
Matriz
"I"[0,0][0, 0][1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
"X"[1,0][1, 0][0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}
"Y"[1,1][1, 1][0ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Parámetros

array (bool) – devuelve una matriz Numpy si True, de lo contrario devuelve una lista (Por defecto: False).

Devuelve

Las filas de PauliList en forma de etiqueta.

Tipo de retorno

lista o matriz

to_matrix

to_matrix(sparse=False, array=False)

GitHub

Convertir en una lista o matriz de matrices de Pauli.

Para grandes PauliLists convertir utilizando el array=True kwarg será más eficiente, ya que asigna la memoria una rank-3 Numpy matriz completa de matrices de antemano.

Etiqueta
Symplectic
Matriz
"I"[0,0][0, 0][1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
"X"[1,0][1, 0][0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}
"Y"[1,1][1, 1][0ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Parámetros

  • sparse (bool) – si True devuelve matrices CSR dispersas, en caso contrario devuelve matrices Numpy densas (Por defecto: False).
  • array (bool) – devolver como rank-3 matriz numpy si True, de lo contrario devolver una lista de matrices Numpy (Por defecto: False).

Devuelve

Una lista de matrices de Pauli densas si array=False y sparse=False. lista: Una lista de matrices de Pauli dispersas si array=False y sparse=True. matriz: Una matriz densa de matrices de Pauli de tipo « rank-3 » si array=True.

Tipo de retorno

list de

transpose

transpose()

GitHub

Devuelve la transposición de cada Pauli de la lista.

unique

unique(return_index=False, return_counts=False)

GitHub

Devuelve el Paulis único de la mesa.

Ejemplo

from qiskit.quantum_info.operators import PauliList

pt = PauliList(['X', 'Y', '-X', 'I', 'I', 'Z', 'X', 'iZ'])
unique = pt.unique()
print(unique)
['X', 'Y', '-X', 'I', 'Z', 'iZ']

Parámetros

  • return_index (bool) – Si es así True, devuelve también los índices que dan lugar a la matriz única. (Por defecto: False)
  • return_counts (bool) – Si True, devuelva también el número de veces que aparece cada elemento único en la tabla.

Devuelve

exclusivo

la tabla de las filas únicas.

índices_únicos: np.ndarray, opcional

Los índices de las primeras apariciones de los valores únicos en la matriz original. Sólo se proporciona si return_index es True.

unique_counts: np.array, opcional

El número de veces que cada uno de los valores únicos aparece en la matriz original. Sólo se proporciona si return_counts es True.

Tipo de retorno

PauliList

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.