Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Basen: BasePauli, LinearMixin, GroupMixin

Liste der N-Qubit Pauli-Operatoren.

Diese Klasse ist eine effiziente Darstellung einer Liste von Pauli operatoren. Es unterstützt 1D numpy array indexing und gibt ein Pauli für Integer-Indizes oder ein PauliList für Slice- oder Listen-Indizes.

Initialisierung

Ein PauliList Objekt kann auf verschiedene Weise initialisiert werden.

PauliList(list[str])

wobei die Zeichenketten die gleiche Darstellung wie bei Pauli.

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

wo Pauli ist Pauli.

PauliList.from_symplectic(z, x, phase)

wobei z und x 2-dimensionale boolesche numpy.ndarrays sind und phase eine ganze Zahl in [0, 1, 2, 3] ist.

Beispiel:

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

Datenzugriff

Auf die einzelnen Paulis kann mit dem Operator [] zugegriffen werden, der Ganzzahlen, Listen oder Slices zur Auswahl von Teilmengen von PauliList akzeptiert. Wenn eine ganze Zahl angegeben wird, wird Pauli und nicht PauliList zurückgegeben.

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

Iteration

Über die Zeilen der Pauli-Tabelle kann wie über eine Liste iteriert werden. Die Iteration kann auch unter Verwendung der Beschriftung oder der Matrixdarstellung jeder Zeile erfolgen, indem die label_iter() und matrix_iter() methoden.

Initialisieren Sie die PauliList.

Parameter

data (Pauli orlist) – eingabedaten für Paulis. Wenn die Eingabe eine Liste ist, muss jedes Element in der Liste ein Pauli-Objekt oder ein Pauli-Str. sein.

Erhöht

QiskitError – wenn das Eingabe-Array eine ungültige Form hat.

Weitere Informationen:

Das Eingabefeld wird nicht kopiert, so dass mehrere Pauli-Tabellen dasselbe zugrunde liegende Feld verwenden können.


Attribute

dim

Rückgabe Tupel (input_shape, output_shape).

num_qubits

Gibt die Anzahl der Qubits zurück, wenn es sich um einen N-Qubit-Operator handelt, andernfalls None.

phase

Rückgabe des Phasenexponenten der PauliList.

qargs

Gibt die qargs für den Operator zurück.

settings

Einstellungen zurückgeben.

shape

Die vollständige Form des array()

size

Die Anzahl der Pauli-Zeilen in der Tabelle.

x

Das x-Feld für die symplektische Darstellung.

z

Das z-Feld für die symplektische Darstellung.


Methoden

adjoint

adjoint()

GitHub

Gibt den Adjungierten jedes Pauli in der Liste zurück.

anticommutes

anticommutes(other, qargs=None)

GitHub

Gib zurück True , wenn der andere Pauli-Operator mit diesem antikommutiert.

Parameter

  • other (PauliList) – einen anderen PauliList Betreiber.
  • qargs (list) – qubits, auf die das Punktprodukt angewendet werden soll (Standard: None).

Rückgabe

True wenn Paulis nicht pendeln, False wenn sie pendeln.

Rückgabetyp

bool

anticommutes_with_all

anticommutes_with_all(other)

GitHub

Gibt die Indizes der Zeilen zurück, die mit der anderen Pauli-Liste antikommutieren.

Wenn other eine mehrzeilige Pauli-Liste ist, indiziert der zurückgegebene Vektor die Zeilen der aktuellen PauliList, die mit allen Paulis in anderen antikommutieren. Wenn keine Zeilen die Bedingung erfüllen, ist das zurückgegebene Array leer.

Parameter

other (PauliList) – eine einzelne Pauli- oder mehrreihige PauliList.

Rückgabe

index-Array der Anti-Commuting-Zeilen.

Rückgabetyp

Bereich

argsort

argsort(weight=False, phase=False)

GitHub

Rückgabe von Indizes für die Sortierung der Zeilen der Tabelle.

Die Standardsortiermethode ist die lexikografische Sortierung nach Qubit-Nummer. Durch die Verwendung des Gewichts kwarg kann die Ausgabe zusätzlich nach der Anzahl der nicht-identischen Terme im Pauli sortiert werden, wobei die Menge aller Paulis eines bestimmten Gewichts weiterhin lexikographisch geordnet wird.

Parameter

  • weight (bool) – Optional kann nach Gewicht sortiert werden, wenn True (Standard: False).
  • phase (bool) – Wahlweise Sortierung nach Phase vor Gewicht oder Reihenfolge (Standard: False).

Rückgabe

die Indizes für die Sortierung der Tabelle.

Rückgabetyp

Bereich

commutes

commutes(other, qargs=None)

GitHub

Gibt True für jedes Pauli zurück, das mit einem anderen pendelt.

Parameter

  • other (PauliList) – einen anderen PauliList Betreiber.
  • qargs (list) – qubits, auf die das Punktprodukt angewendet werden soll (Standard: None).

Rückgabe

True wenn Paulis pendeln, False wenn sie nicht pendeln.

Rückgabetyp

bool

commutes_with_all

commutes_with_all(other)

GitHub

Gibt Indizes von Zeilen zurück, die other entsprechen.

Wenn other eine mehrzeilige Pauli-Liste ist, indiziert der zurückgegebene Vektor die Zeilen der aktuellen PauliList, die mit allen Paulis der anderen Liste übereinstimmen. Wenn keine Zeilen die Bedingung erfüllen, ist das zurückgegebene Array leer.

Parameter

other (PauliList) – eine einzelne Pauli- oder mehrreihige PauliList.

Rückgabe

index-Array der Pendelzeilen.

Rückgabetyp

Bereich

compose

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

GitHub

Rückgabe der Zusammensetzung self∘other für jedes Pauli in der Liste.

Parameter

  • other (PauliList) – eine weitere PauliList.
  • qargs (None or list) – qubits, auf die das Punktprodukt angewendet werden soll (Voreinstellung: None).
  • front (bool) – Wenn True, wird die Methode der Punktkomposition verwendet [Standard: False].
  • inplace (bool) – Wenn True die Aktualisierung an Ort und Stelle vornimmt (Standard: False).

Rückgabe

die Liste der verfassten Paulis.

Rückgabetyp

PauliList

Erhöht

qargsQiskitError – wenn andere nicht in eine „ PauliList, “ konvertiert werden können, weil diese entweder nicht 1 oder nicht die gleiche Anzahl an Paulis wie die aktuelle Liste aufweist oder die falsche Anzahl an Qubits für die angegebene Liste hat.

conjugate

conjugate()

GitHub

Gibt die Konjugierte jedes Pauli in der Liste zurück.

copy

copy()

GitHub

Erstellen Sie eine Tiefenkopie des aktuellen Operators.

delete

delete(ind, qubit=False)

GitHub

Gibt eine Kopie zurück, in der die Pauli-Zeilen aus der Tabelle gelöscht sind.

Beim Löschen von Qubits ist der Qubit-Index derselbe wie der Spaltenindex der zugrunde liegenden Arrays X und Z .

Parameter

  • ind (int orlist) – zu löschende(n) Index(e).
  • qubit (bool) – wenn True Qubit-Spalten löschen, sonst Pauli-Zeilen löschen (Standard: False).

Rückgabe

die resultierende Tabelle, aus der die Einträge entfernt wurden.

Rückgabetyp

PauliList

Erhöht

QiskitError – wenn ind außerhalb des zulässigen Bereichs für die Array-Größe oder die Anzahl der Qubits liegt.

dot

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

GitHub

Rückgabe der Zusammensetzung other∘self für jeden Pauli in der Liste.

Parameter

  • other (PauliList) – eine weitere PauliList.
  • qargs (None or list) – qubits, auf die das Punktprodukt angewendet werden soll (Voreinstellung: None).
  • inplace (bool) – Wenn True, wird die Aktualisierung an Ort und Stelle durchgeführt (Standard: False).

Rückgabe

die Liste der verfassten Paulis.

Rückgabetyp

PauliList

Erhöht

qargsQiskitError – wenn andere nicht in eine „ PauliList, “ konvertiert werden können, weil diese entweder nicht 1 oder nicht die gleiche Anzahl an Paulis wie die aktuelle Liste aufweist oder die falsche Anzahl an Qubits für die angegebene Liste hat.

equiv

equiv(other)

GitHub

Eingangsweiser Vergleich der Pauli-Äquivalenz bis zur globalen Phase.

Parameter

other (PauliList orPauli) – ein Vergleichsobjekt.

Rückgabe

Eine Reihe von True oder False für eingangsbezogene Gleichwertigkeit

der aktuellen Tabelle.

Rückgabetyp

np.ndarray

evolve

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

GitHub

Führt entweder die Heisenberg- (Standard) oder die Schrödinger-Bildentwicklung des Pauli-Bildes durch ein Clifford-Bild durch und gibt das entwickelte Pauli-Bild zurück.

Die Entwicklung des Schrödinger-Bildes kann durch Übergabe des Parameters frame='s' gewählt werden. Diese Option führt zu einer schnelleren Berechnung.

Heisenbergs Bild entwickelt das Pauli als P′=C†.P.CP^\prime = C^\dagger.P.C.

Schrödingers Bild entfaltet das Pauli-Bild als P′=C.P.C†P^\prime = C.P.C^\dagger.

Parameter

  • other (Pauli orClifford orQuantumCircuit) – Der Clifford-Operator, nach dem die Entwicklung erfolgen soll.
  • qargs (list) – eine Liste von Qubits, auf die das Clifford-Verfahren angewendet werden soll.
  • frame (string) – 'h' für Heisenberg (Standard) oder 's' für das Schrödinger-System.

Rückgabe

das Pauli C†.P.CC^\dagger.P.C (Heisenberg-Bild) oder das Pauli C.P.C†C.P.C^\dagger (Schrödinger-Bild).

Rückgabetyp

PauliList

Erhöht

QiskitError – wenn die Clifford-Zahl der Qubits und die der Qargs nicht übereinstimmen.

expand

expand(other)

GitHub

Gibt das Expand-Produkt jedes Pauli in der Liste zurück.

Parameter

other (PauliList) – eine weitere PauliList.

Rückgabe

die Liste der Tensorprodukte Paulis.

Rückgabetyp

PauliList

Erhöht

QiskitError – wenn „other“ nicht in „ PauliList, “ umgewandelt werden kann, da es weder 1 noch dieselbe Anzahl an Paulis wie die aktuelle Liste enthält.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

Konstruieren Sie eine PauliList aus symplektischen Daten.

Parameter

  • z (np.ndarray) – 2D boolesches Numpy-Array.
  • x (np.ndarray) – 2D boolesches Numpy-Array.
  • phase (np.ndarray or None) – 1D Ganzzahl-Array von Z_4.

Rückgabe

die konstruierte PauliList.

Rückgabetyp

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

Partitionieren Sie eine PauliList in Mengen von kommutierenden Pauli-Strings.

Parameter

qubit_wise (bool) –

ob die Kommutierungsregel auf den gesamten Operator oder auf ein einzelnes Qubit angewendet wird. Zum Beispiel:

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

Rückgabe

Liste von PauliLists, in der jede PauliList kommutierende Pauli-Operatoren enthält.

Rückgabetyp

liste [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

Partitionierung von PauliList in Gruppen von wechselseitig Qubit-weise kommutierenden Pauli-Strings.

Rückgabe

Liste von PauliLists, in der jede PauliList kommutable Pauli-Operatoren enthält.

Rückgabetyp

liste [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

Rückgabe eines Tupels der Eingabedimension für die angegebenen Teilsysteme.

insert

insert(ind, value, qubit=False)

GitHub

Fügen Sie Paulis in die Tabelle ein.

Beim Einfügen von Qubits ist der Qubit-Index derselbe wie der Spaltenindex der zugrunde liegenden Arrays X und Z .

Parameter

  • ind (int) – index zum Einfügen bei.
  • value (PauliList) – werte einzufügen.
  • qubit (bool) – wenn True Qubit-Spalten einfügen, sonst Pauli-Zeilen einfügen (Standard: False).

Rückgabe

die resultierende Tabelle mit den eingefügten Einträgen.

Rückgabetyp

PauliList

Erhöht

QiskitError – wenn der Einfügeindex ungültig ist.

inverse

inverse()

GitHub

Gibt den Kehrwert jedes Pauli in der Liste zurück.

label_iter

label_iter()

GitHub

Gibt einen Iterator für die Darstellung von Etiketten zurück.

Dies ist ein träger Iterator, der jede Zeile nur dann in die Zeichenfolge label umwandelt, wenn sie verwendet wird. Um die gesamte Tabelle in Beschriftungen umzuwandeln, verwenden Sie die to_labels() methode.

Rückgabe

label-Iterator-Objekt für die PauliList.

Rückgabetyp

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

Gibt einen Iterator für die Matrixdarstellung zurück.

Dies ist ein träger Iterator, der jede Zeile nur dann in die Pauli-Matrix-Darstellung umwandelt, wenn sie verwendet wird. Um die gesamte Tabelle in Matrizen umzuwandeln, verwenden Sie die to_matrix() methode.

Parameter

sparse (bool) – Gibt optional spärliche CSR-Matrizen zurück, wenn True, andernfalls Numpy-Array-Matrizen (Standard: False)

Rückgabe

matrix-Iterator-Objekt für die PauliList.

Rückgabetyp

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

Erstellen Sie den Nicht-Kommutationsgraphen dieser PauliList.

Dadurch wird das Problem der Gruppierung von Messoperatoren in ein Problem der Graphenfärbung umgewandelt. Der konstruierte Graph enthält einen Knoten für jeden Pauli. Die Knoten verbinden sich für zwei beliebige Pauli-Terme, die sich nicht vertauschen.

Parameter

qubit_wise (bool) – ob die Kommutierungsregel auf den gesamten Operator oder auf ein einzelnes Qubit angewendet wird.

Rückgabe

der Nicht-Kommutationsgraph mit Knoten für jedes Pauli und Kanten

was auf eine Nicht-Kommutationsbeziehung hinweist. Jeder Knoten enthält den Index des Pauli-Terms, dem er in seinen Daten entspricht. Die Kanten des Graphen enthalten keine Daten.

Rückgabetyp

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

Rückgabe eines Tupels der Ausgabedimension für die angegebenen Teilsysteme.

power

power(n)

GitHub

Gibt das Ergebnis der n-maligen Anwendung eines Operators auf sich selbst zurück.

Parameter

n (int) – die Anzahl der Kompositionen mit sich selbst ( n>0 ).

Rückgabe

der n-fach zusammengesetzte Operator.

Rückgabetyp

Clifford

Erhöht

QiskitError – wenn die Eingabe- und Ausgabedimensionen des Operators nicht gleich sind oder die Potenz keine positive ganze Zahl ist.

reshape

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

GitHub

Rückgabe einer flachen Kopie mit umgestalteten Dimensionen des Eingangs- und Ausgangssubsystems.

Parameter

  • input_dims (None or tuple) – neue Subsystem-Eingangsmaße. Wenn Keine, werden die ursprünglichen Eingangsdimms beibehalten [Standard: Keine].
  • output_dims (None or tuple) – neue Dimensionen der Teilsystemleistung. Wenn Keine, werden die ursprünglichen Ausgangsdimms beibehalten [Standard: Keine].
  • num_qubits (None or int) – in einen N-Qubit-Operator umwandeln [Standard: Keine].

Rückgabe

gibt self mit umgestalteten Eingabe- und Ausgabeabmessungen zurück.

Rückgabetyp

BaseOperator

Erhöht

QiskitError – wenn die Summe aller Eingangs- oder Ausgangsabmessungen der Teilsysteme nicht konstant ist.

sort

sort(weight=False, phase=False)

GitHub

Sortieren Sie die Zeilen der Tabelle.

Die Standardsortiermethode ist die lexikografische Sortierung nach Qubit-Nummer. Durch die Verwendung des Gewichts kwarg kann die Ausgabe zusätzlich nach der Anzahl der nicht-identischen Terme im Pauli sortiert werden, wobei die Menge aller Paulis eines bestimmten Gewichts weiterhin lexikographisch geordnet wird.

Beispiel

Betrachten wir eine zufällige Sortierung aller 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']

Parameter

  • weight (bool) – optional nach Gewicht sortieren, wenn True (Standard: False).
  • phase (bool) – Wahlweise Sortierung nach Phase vor Gewicht oder Reihenfolge (Standard: False).

Rückgabe

eine sortierte Kopie der Originaltabelle.

Rückgabetyp

PauliList

tensor

tensor(other)

GitHub

Gibt das Tensorprodukt mit jedem Pauli in der Liste zurück.

Parameter

other (PauliList) – eine weitere PauliList.

Rückgabe

die Liste der Tensorprodukte Paulis.

Rückgabetyp

PauliList

Erhöht

QiskitError – wenn „other“ nicht in „ PauliList, “ umgewandelt werden kann, da es weder 1 noch dieselbe Anzahl an Paulis wie die aktuelle Liste enthält.

to_labels

to_labels(array=False)

GitHub

Konvertiert eine PauliList in eine Liste Pauli-String-Labels.

Bei großen PauliLists ist die Konvertierung mit array=True kwarg effizienter, da es im Voraus Speicher für das gesamte Numpy-Array von Labels zuweist.

Bezeichnung (Label)
Symplektisch
Matrix
"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][0−ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][100−1]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Parameter

array (bool) – gibt ein Numpy-Array zurück, wenn True, andernfalls eine Liste (Standard: False).

Rückgabe

Die Zeilen der PauliList in Form von Etiketten.

Rückgabetyp

Liste oder Array

to_matrix

to_matrix(sparse=False, array=False)

GitHub

Umwandlung in eine Liste oder ein Array von Pauli-Matrizen.

Für große PauliLists ist die Konvertierung mit dem array=True kwarg effizienter, da es den Speicher für ein komplettes rank-3 Numpy-Array von Matrizen im Voraus zuweist.

Bezeichnung (Label)
Symplektisch
Matrix
"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][0−ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][100−1]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Parameter

  • sparse (bool) – wenn True spärliche CSR-Matrizen zurückgibt, andernfalls dichte Numpy-Arrays (Standard: False).
  • array (bool) – rückgabe als rank-3 Numpy-Array, wenn True, sonst Rückgabe einer Liste von Numpy-Arrays (Standard: False).

Rückgabe

Eine Liste dichter Pauli-Matrizen, wenn array=False und sparse=False. Liste: Eine Liste spärlicher Pauli-Matrizen, wenn array=False und sparse=True. array: Ein dichtes Array von Pauli-Matrizen vom Typ rank-3, wenn array=True.

Rückgabetyp

Liste

transpose

transpose()

GitHub

Gibt die Transponierung jedes Pauli in der Liste zurück.

unique

unique(return_index=False, return_counts=False)

GitHub

Geben Sie die einzigartigen Paulis vom Tisch zurück.

Beispiel

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

Parameter

  • return_index (bool) – Wenn Trueja, gib auch die Indizes zurück, die zu dem eindeutigen Array führen. (Standard: False)
  • return_counts (bool) – Falls True, wird auch die Anzahl der Vorkommen jedes einzelnen Elements in der Tabelle zurückgegeben.

Rückgabe

eindeutg

die Tabelle mit den eindeutigen Zeilen.

unique_indices: np.ndarray, optional

Die Indizes des ersten Auftretens der eindeutigen Werte im ursprünglichen Array. Nur verfügbar, wenn return_index True ist.

unique_counts: np.array, optional

Die Anzahl, wie oft jeder der eindeutigen Werte im ursprünglichen Array auftaucht. Nur verfügbar, wenn return_counts True ist.

Rückgabetyp

PauliList

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.