PauliList
class qiskit.quantum_info.PauliList(data)
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
zexsono booleani bidimensionalinumpy.ndarraysephaseè 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
anticommutes
anticommutes(other, qargs=None)
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
anticommutes_with_all
anticommutes_with_all(other)
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
argsort
argsort(weight=False, phase=False)
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
commutes
commutes(other, qargs=None)
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
commutes_with_all
commutes_with_all(other)
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
compose
compose(other, qargs=None, front=False, inplace=False)
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
Trueaggiorna in-place (default:False).
Risultati
l'elenco dei Paoli composti.
Tipo di restituzione
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
copy
delete
delete(ind, qubit=False)
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
Trueelimina le colonne di qubit, altrimenti elimina le righe di Pauli (predefinito:False).
Risultati
la tabella risultante con le voci rimosse.
Tipo di restituzione
Aumenti
QiskitError – se ind è fuori dai limiti della dimensione dell'array o del numero di qubit.
dot
dot(other, qargs=None, inplace=False)
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
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)
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')
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 .
Il quadro di Schrödinger evolve il Pauli come .
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 (quadro di Heisenberg) o il Pauli (quadro di Schrödinger).
Tipo di restituzione
Aumenti
QiskitError – se il numero di Clifford dei qubit e dei qarg non coincide.
expand
expand(other)
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
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)
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
group_commuting
group_commuting(qubit_wise=False)
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
group_qubit_wise_commuting
group_qubit_wise_commuting()
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
input_dims
input_dims(qargs=None)
Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.
insert
insert(ind, value, qubit=False)
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
Trueinserisce le colonne di qubit, altrimenti inserisce le righe di Pauli (predefinito:False).
Risultati
la tabella risultante con le voci inserite.
Tipo di restituzione
Aumenti
QiskitError – se l'indice di inserimento non è valido.
inverse
label_iter
label_iter()
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)
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)
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
output_dims
output_dims(qargs=None)
Restituisce una tupla di dimensioni di uscita per i sottosistemi specificati.
power
power(n)
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
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)
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)
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
tensor
tensor(other)
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
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)
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" | ||
"X" | ||
"Y" | ||
"Z" |
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
to_matrix
to_matrix(sparse=False, array=False)
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" | ||
"X" | ||
"Y" | ||
"Z" |
Parametri
- sparse (bool) – se
Truerestituisce 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
transpose
unique
unique(return_index=False, return_counts=False)
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