Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Basi: BasePauli, LinearMixin, GroupMixin

Elenco degli operatori di Pauli a N-qubit.

Questa classe è una rappresentazione efficiente di una lista di Pauli operatori. Supporta l'indicizzazione di array numpy 1D restituendo un valore Pauli per gli indici interi o un PauliList per indici di tipo slice o list.

Inizializzazione

Un oggetto PauliList può essere inizializzato in diversi modi.

PauliList(list[str])

dove le stringhe hanno la stessa rappresentazione con Pauli.

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

dove Pauli è Pauli.

PauliList.from_symplectic(z, x, phase)

dove z e x sono booleani bidimensionali numpy.ndarrays e phase è un intero in [0, 1, 2, 3].

Ad esempio:

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']

Accesso ai dati

Si può accedere ai singoli Paoli e aggiornarli usando l'operatore [] che accetta interi, liste o fette per selezionare sottoinsiemi di PauliList. Se viene dato un numero intero, restituisce Pauli non 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'])

Iterazione

Le righe della tabella Pauli possono essere iterate come un elenco. L'iterazione può essere effettuata anche utilizzando l'etichetta o la rappresentazione matriciale di ogni riga, utilizzando i parametri label_iter() e matrix_iter() .

Inizializzare il sito PauliList.

Parametri

data (Pauli orlist) – dati di input per Paulis. Se l'input è un elenco, ogni elemento dell'elenco deve essere un oggetto Pauli o una stringa Pauli.

Aumenti

QiskitError – se l'array di input ha una forma non valida.

Ulteriori informazioni:

L'array di input non viene copiato, pertanto più tabelle Pauli possono condividere lo stesso array sottostante.


Attributi

dim

Restituisce una tupla (forma_ingresso, forma_uscita).

num_qubits

Restituisce il numero di qubit se si tratta di un operatore a N qubit o altrimenti None.

phase

Restituisce l'esponente di fase di PauliList.

qargs

Restituisce i qarg per l'operatore.

settings

Impostazioni di ritorno.

shape

La forma completa del array()

size

Il numero di righe Pauli nella tabella.

x

La matrice x per la rappresentazione simplettica.

z

La matrice z per la rappresentazione simplettica.


Metodi

adjoint

adjoint()

GitHub

Restituisce l'adjoint di ogni Pauli dell'elenco.

anticommutes

anticommutes(other, qargs=None)

GitHub

Restituisci il risultato True se l'altro operatore di Pauli anticommuta con questo.

Parametri

  • other (PauliList) – un altro operatore di PauliList.
  • qargs (list) – qubit a cui applicare il prodotto di punti (valore predefinito: None).

Risultati

True se i paoli sono anticongiunturali, False se sono pendolari.

Tipo di restituzione

bool

anticommutes_with_all

anticommutes_with_all(other)

GitHub

Restituisce gli indici delle righe che anticommutano con l'altra lista di Pauli.

Se other è una lista di Pauli a più righe, il vettore restituito indicizza le righe della PauliList corrente che sono anticommutanti con tutte le Pauli dell'altra. Se nessuna riga soddisfa la condizione, l'array restituito sarà vuoto.

Parametri

other (PauliList) – un singolo Pauli o una fila multipla PauliList.

Risultati

array di indici delle righe anti-commuting.

Tipo di restituzione

array

argsort

argsort(weight=False, phase=False)

GitHub

Restituisce gli indici per ordinare le righe della tabella.

Il metodo di ordinamento predefinito è l'ordinamento lessicografico per numero di qubit. Utilizzando il peso kwarg, l'output può essere ordinato anche in base al numero di termini non identici nel Pauli, dove l'insieme di tutti i Pauli di un determinato peso è ancora ordinato lessicograficamente.

Parametri

  • weight (bool) – Ordinare facoltativamente per peso se True (predefinito: False).
  • phase (bool) – Ordinare facoltativamente per fase prima del peso o per ordine (predefinito: False).

Risultati

gli indici per ordinare la tabella.

Tipo di restituzione

array

commutes

commutes(other, qargs=None)

GitHub

Restituisce True per ogni Pauli che commuta con gli altri.

Parametri

  • other (PauliList) – un altro operatore di PauliList.
  • qargs (list) – qubit a cui applicare il prodotto di punti (valore predefinito: None).

Risultati

True se i paoli fanno i pendolari, False se fanno gli anti-comunitari.

Tipo di restituzione

bool

commutes_with_all

commutes_with_all(other)

GitHub

Restituisce gli indici delle righe che si intersecano con other.

Se other è una lista di Pauli a più righe, il vettore restituito indicizza le righe della PauliList corrente che commutano con tutte le Pauli dell'altra. Se nessuna riga soddisfa la condizione, l'array restituito sarà vuoto.

Parametri

other (PauliList) – un singolo Pauli o una fila multipla PauliList.

Risultati

matrice di indici delle righe pendolari.

Tipo di restituzione

array

compose

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

GitHub

Restituisce la composizione self∘other per ogni Pauli dell'elenco.

Parametri

  • other (PauliList) – un altro PauliList.
  • qargs (None or list) – qubit a cui applicare il prodotto di punti (predefinito: None).
  • front (bool) – Se è vero, utilizzare il metodo di composizione dei punti [predefinito: False].
  • inplace (bool) – Se True aggiorna in-place (default: False).

Risultati

l'elenco dei Paoli composti.

Tipo di restituzione

PauliList

Aumenti

qargsQiskitError – se l'altro non può essere convertito in un PauliList,, non ha né 1 né lo stesso numero di Pauli dell'elenco corrente, oppure ha un numero errato di qubit per il specificato.

conjugate

conjugate()

GitHub

Restituisce il coniugato di ogni Pauli dell'elenco.

copy

copy()

GitHub

Eseguire una copia profonda dell'operatore corrente.

delete

delete(ind, qubit=False)

GitHub

Restituisce una copia con le righe Pauli eliminate dalla tabella.

Quando si eliminano i qubit, l'indice del qubit è lo stesso dell'indice di colonna degli array X e Z sottostanti.

Parametri

  • ind (int orlist) – indice/i da eliminare.
  • qubit (bool) – se True elimina le colonne di qubit, altrimenti elimina le righe di Pauli (predefinito: False).

Risultati

la tabella risultante con le voci rimosse.

Tipo di restituzione

PauliList

Aumenti

QiskitError – se ind è fuori dai limiti della dimensione dell'array o del numero di qubit.

dot

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

GitHub

Restituisce la composizione other∘self per ogni Pauli dell'elenco.

Parametri

  • other (PauliList) – un altro PauliList.
  • qargs (None or list) – qubit a cui applicare il prodotto di punti (predefinito: None).
  • inplace (bool) – Se True aggiorna in-place (valore predefinito: False).

Risultati

l'elenco dei Paoli composti.

Tipo di restituzione

PauliList

Aumenti

qargsQiskitError – se l'altro non può essere convertito in un PauliList,, non ha né 1 né lo stesso numero di Pauli dell'elenco corrente, oppure ha un numero errato di qubit per il specificato.

equiv

equiv(other)

GitHub

Confronto entrywise dell'equivalenza di Pauli fino alla fase globale.

Parametri

other (PauliList orPauli) – un oggetto di confronto.

Risultati

Un array di True o False per l'equivalenza entrywise

della tabella corrente.

Tipo di restituzione

np.ndarray

evolve

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

GitHub

Esegue l'evoluzione del quadro di Heisenberg (predefinito) o di Schrödinger del Pauli da parte di un Clifford e restituisce il Pauli evoluto.

L'evoluzione dell'immagine di Schrödinger può essere scelta passando il parametro frame='s'. Questa opzione consente di ottenere un calcolo più rapido.

Il quadro di Heisenberg evolve il Pauli come P=C.P.CP^\prime = C^\dagger.P.C.

Il quadro di Schrödinger evolve il Pauli come P=C.P.CP^\prime = C.P.C^\dagger.

Parametri

  • other (Pauli orClifford orQuantumCircuit) – L'operatore di Clifford da utilizzare per l'evoluzione.
  • qargs (list) – un elenco di qubit a cui applicare il Clifford.
  • frame (string) – 'h' per Heisenberg (default) o 's' per il quadro di Schrödinger.

Risultati

il Pauli C.P.CC^\dagger.P.C (quadro di Heisenberg) o il Pauli C.P.CC.P.C^\dagger (quadro di Schrödinger).

Tipo di restituzione

PauliList

Aumenti

QiskitError – se il numero di Clifford dei qubit e dei qarg non coincide.

expand

expand(other)

GitHub

Restituisce il prodotto di espansione di ogni Pauli dell'elenco.

Parametri

other (PauliList) – un altro PauliList.

Risultati

l'elenco dei prodotti tensoriali di Paulis.

Tipo di restituzione

PauliList

Aumenti

QiskitError – se l'altro non può essere convertito in un PauliList, non contiene né 1 né lo stesso numero di Pauli dell'elenco corrente.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

Costruire un PauliList a partire da un dato simplettico.

Parametri

  • z (np.ndarray) – 2D booleano Array Numpy.
  • x (np.ndarray) – 2D booleano Array Numpy.
  • phase (np.ndarray or None) – 1D array di numeri interi tratto da Z_4.

Risultati

il costruito PauliList.

Tipo di restituzione

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

Partire un PauliList in insiemi di stringhe di Pauli commutanti.

Parametri

qubit_wise (bool) –

se la regola di commutazione viene applicata all'intero operatore o su base per-qubit. Ad esempio:

>>> 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'])]

Risultati

Elenco di PauliLists in cui ogni PauliList contiene operatori di Pauli commutativi.

Tipo di restituzione

elenco [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

Partire un PauliList in insiemi di stringhe di Pauli mutuamente commutanti.

Risultati

Elenco di PauliLists in cui ogni PauliList contiene operatori di Pauli commutabili.

Tipo di restituzione

elenco [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.

insert

insert(ind, value, qubit=False)

GitHub

Inserire Paulis nella tabella.

Quando si inseriscono i qubit, l'indice del qubit è lo stesso dell'indice di colonna degli array X e Z sottostanti.

Parametri

  • ind (int) – indice da inserire.
  • value (PauliList) – valori da inserire.
  • qubit (bool) – se True inserisce le colonne di qubit, altrimenti inserisce le righe di Pauli (predefinito: False).

Risultati

la tabella risultante con le voci inserite.

Tipo di restituzione

PauliList

Aumenti

QiskitError – se l'indice di inserimento non è valido.

inverse

inverse()

GitHub

Restituisce l'inverso di ogni Pauli dell'elenco.

label_iter

label_iter()

GitHub

Restituisce un iteratore di rappresentazioni di etichette.

Si tratta di un iteratore pigro che converte ogni riga nell'etichetta stringa solo quando viene utilizzata. Per convertire l'intera tabella in etichette, utilizzare il metodo to_labels() metodo.

Risultati

oggetto iteratore di etichette per PauliList.

Tipo di restituzione

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

Restituisce un iteratore di rappresentazione della matrice.

Si tratta di un iteratore pigro che converte ogni riga nella rappresentazione della matrice di Pauli solo quando viene utilizzata. Per convertire l'intera tabella in matrici, utilizzare il metodo to_matrix() metodo.

Parametri

sparse (bool) – restituisce facoltativamente matrici CSR sparse se True, altrimenti restituisce matrici sotto forma di array Numpy (Impostazione predefinita: False)

Risultati

oggetto iteratore di matrici per PauliList.

Tipo di restituzione

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

Creare il grafo di non commutazione di questo PauliList.

Questo trasforma il problema del raggruppamento degli operatori di misura in un problema di colorazione dei grafi. Il grafo costruito contiene un nodo per ogni Pauli. I nodi si collegheranno per ogni due termini di Pauli che non commutano.

Parametri

qubit_wise (bool) – se la regola di commutazione viene applicata all'intero operatore o su base per-qubit.

Risultati

il grafo di non-commutazione con nodi per ogni Pauli e bordi

che indica una relazione di non commutazione. Ogni nodo conterrà l'indice del termine di Pauli a cui corrisponde nei suoi dati. I bordi del grafo non contengono dati.

Tipo di restituzione

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di uscita per i sottosistemi specificati.

power

power(n)

GitHub

Restituisce il risultato dell'applicazione di un operatore su se stesso per n volte.

Parametri

n (int) – il numero di volte che si compone con il sé ( n>0 ).

Risultati

l'operatore composto n volte.

Tipo di restituzione

Clifford

Aumenti

QiskitError – se le dimensioni di ingresso e di uscita dell'operatore non sono uguali, oppure se la potenza non è un numero intero positivo.

reshape

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

GitHub

Restituisce una copia superficiale con le dimensioni dei sottosistemi di ingresso e di uscita rimodellate.

Parametri

  • input_dims (None or tuple) – nuove dimensioni di input del sottosistema. Se Nessuno, le attenuazioni dell'input originale verranno mantenute. [Predefinito: Nessuno].
  • output_dims (None or tuple) – nuove dimensioni di uscita del sottosistema. Se Nessuno, le gradazioni di output originali verranno mantenute. [Predefinito: Nessuno].
  • num_qubits (None or int) – rimodella in un operatore N-qubit [Predefinito: Nessuno].

Risultati

restituisce self con le dimensioni di ingresso e di uscita rimodellate.

Tipo di restituzione

BaseOperator

Aumenti

QiskitError – se la somma delle dimensioni di ingresso o di uscita di tutti i sottosistemi non è costante.

sort

sort(weight=False, phase=False)

GitHub

Ordinare le righe della tabella.

Il metodo di ordinamento predefinito è l'ordinamento lessicografico per numero di qubit. Utilizzando il peso kwarg, l'output può essere ordinato anche in base al numero di termini non identici nel Pauli, dove l'insieme di tutti i Pauli di un determinato peso è ancora ordinato lessicograficamente.

Esempio

Si consideri l'ordinamento casuale di tutti i 2-qubit di 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']

Parametri

  • weight (bool) – ordinare facoltativamente per peso se True (predefinito: False).
  • phase (bool) – Ordinare facoltativamente per fase prima del peso o per ordine (predefinito: False).

Risultati

una copia ordinata della tabella originale.

Tipo di restituzione

PauliList

tensor

tensor(other)

GitHub

Restituisce il prodotto tensoriale con ogni Pauli dell'elenco.

Parametri

other (PauliList) – un altro PauliList.

Risultati

l'elenco dei prodotti tensoriali di Paulis.

Tipo di restituzione

PauliList

Aumenti

QiskitError – se l'altro non può essere convertito in un PauliList, non contiene né 1 né lo stesso numero di Pauli dell'elenco corrente.

to_labels

to_labels(array=False)

GitHub

Converte un PauliList in un elenco di etichette di stringhe Pauli.

Per PauliLists di grandi dimensioni, la conversione con il kwarg array=True sarà più efficiente, poiché alloca in anticipo la memoria per l'intero array Numpy di etichette.

Etichetta
Simplettico
Matrice
"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}

Parametri

array (bool) – restituisce un array Numpy se True, altrimenti restituisce un elenco (predefinito: False).

Risultati

Le righe di PauliList in forma di etichetta.

Tipo di restituzione

elenco o array

to_matrix

to_matrix(sparse=False, array=False)

GitHub

Convertire in un elenco o in una matrice di matrici di Pauli.

Per le grandi PauliLists conversioni l'uso del kwarg array=True sarà più efficiente, poiché alloca in memoria un array rank-3 Numpy completo di matrici in anticipo.

Etichetta
Simplettico
Matrice
"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}

Parametri

  • sparse (bool) – se True restituisce matrici CSR rade, altrimenti restituisce matrici Numpy dense (predefinito: False).
  • array (bool) – restituisce come array numpy rank-3 se True, altrimenti restituisce un elenco di array Numpy (predefinito: False).

Risultati

Un elenco di matrici di Pauli dense se array=False e sparse=False. elenco: un elenco di matrici di Pauli sparse se array=False e sparse=True. matrice: una matrice densa di matrici di Pauli di dimensione rank-3, se array=True.

Tipo di restituzione

elenco

transpose

transpose()

GitHub

Restituisce la trasposizione di ogni Pauli dell'elenco.

unique

unique(return_index=False, return_counts=False)

GitHub

Restituire l'unico Paulis dal tavolo.

Esempio

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']

Parametri

  • return_index (bool) – Se True, restituisci anche gli indici che compongono l'array unico. (Impostazione predefinita: False)
  • return_counts (bool) – Se True, restituisce anche il numero di volte in cui ogni voce unica compare nella tabella.

Risultati

univoco

la tabella delle righe uniche.

indici unici: np.ndarray, opzionale

Gli indici delle prime occorrenze dei valori unici nell'array originale. Fornito solo se return_index è True.

conti unici: np.array, opzionale

Il numero di volte in cui ciascuno dei valori unici compare nell'array originale. Fornito solo se return_counts è True.

Tipo di restituzione

PauliList

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.