Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

ベース BasePauli LinearMixinGroupMixin

N量子ビットのパウリ演算子のリスト。

このクラスは Pauli 演算子のリストを効率的に表現します。 を返す 1D numpy配列インデックスをサポートしています。 Pauli を返します。 PauliList を返します。

初期化

PauliList オブジェクトはいくつかの方法で初期化できる。

PauliList(list[str])

ここで、文字列は Pauli.

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

パウリは Pauli.

PauliList.from_symplectic(z, x, phase)

ここで、 zx は2次元のブーリアン numpy.ndarrays であり、 phase[0, 1, 2, 3] の整数である。

例:

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

データ・アクセス

個々のポーリは、 PauliList のサブセットを選択するための整数、リスト、またはスライスを受け付ける [] 演算子を使用して、アクセスおよび更新することができる。 整数を指定した場合は、 PauliList ではなく Pauli を返す。

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

反復

パウリ・テーブルの行はリストのように反復することができる。 反復は、各行のラベルまたは行列表現を使用して行うこともできます。 label_iter()matrix_iter() メソッドを使って行うこともできる。

PauliList を初期化する。

パラメーター

data (Pauli orlist) – ポーリスの入力データ。 入力がリストの場合、リストの各項目はPauliオブジェクトかPauli strでなければならない。

レイズ

QiskitError - 入力配列が無効な形状の場合

追加情報:

入力配列はコピーされないので、複数のパウリ表が同じ配列を共有できる。


属性

dim

タプル(input_shape, output_shape)を返す。

num_qubits

N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。

phase

PauliList の位相指数を返す。

qargs

演算子の qargs を返す。

settings

リターン設定。

shape

のフルシェイプ。 array()

size

テーブルのパウリ行の数。

x

シンプレクティック表現のx配列。

z

シンプレクティック表現のz配列。


方法

adjoint

adjoint()

GitHub

リスト中の各 Pauli のアジョイントを返す。

anticommutes

anticommutes(other, qargs=None)

GitHub

もしもう一方のパウリ演算子がこのパウリ演算子と反交換関係にあるならば True 、戻る。

パラメーター

  • other (PauliList) – 別の PauliList。
  • qargs (list) – ドット積を適用する量子ビット (デフォルト: None)。

戻り値

True ポーリスが通勤しない場合は、 False

戻りの型

bool

anticommutes_with_all

anticommutes_with_all(other)

GitHub

もう一方のパウリリストと反交換する行のインデックスを返す。

other が複数行の Pauli リストである場合、返されるベクトルは、現在の PauliList の行のうち、他の行のすべての Pauli と反行する行のインデックスを示す。 条件を満たす行がない場合、返される配列は空になります。

パラメーター

other (PauliList) – シングル・パウリまたはマルチ・ロー PauliList。

戻り値

反コミューティング行のインデックス配列。

戻りの型

アレイ

argsort

argsort(weight=False, phase=False)

GitHub

テーブルの行をソートするためのインデックスを返す。

デフォルトのソート方法は、量子ビット番号による辞書式ソートです。 重みkwargを使うことで、出力はさらにパウリに含まれる非同一項の数でソートすることができる。

パラメーター

  • weight (bool) – True (デフォルト: )。 False
  • phase (bool) – オプションで、重量または順序の前に位相でソートする (デフォルト: False)。

戻り値

テーブルをソートするためのインデックス。

戻りの型

アレイ

commutes

commutes(other, qargs=None)

GitHub

他のパウリとコミュートする各パウリに対して真を返す。

パラメーター

  • other (PauliList) – 別の PauliList。
  • qargs (list) – ドット積を適用する量子ビット (デフォルト: None)。

戻り値

True ポーリスが通勤していれば、 False 、反通勤していれば。

戻りの型

bool

commutes_with_all

commutes_with_all(other)

GitHub

other に一致する行のインデックスを返す。

other が複数行の Pauli リストである場合、返されるベクトルは、現在の PauliList の行のうち、他の行のすべての Pauli と commute する行のインデックスを示す。 条件を満たす行がない場合、返される配列は空になります。

パラメーター

other (PauliList) – シングル・パウリまたはマルチ・ロー PauliList。

戻り値

通勤行のインデックス配列。

戻りの型

アレイ

compose

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

GitHub

リスト中の各Pauliのself∘otherの合成を返す。

パラメーター

  • other (PauliList) – another PauliList.
  • qargs (None or list) – ドット積を適用する量子ビット (デフォルト: None)。
  • front (bool) – Trueの場合、ドット合成法を使う[デフォルト: False].
  • inplace (bool) – True 、インプレースで更新する(デフォルト: )。 False

戻り値

作曲されたパウリのリスト

戻りの型

PauliList

レイズ

QiskitError - に変換できない場合、 PauliList, は現在のリストと同じ数のポーリを1つも持っていないか、指定された qargs に対して間違った数のクビットを持っている。

conjugate

conjugate()

GitHub

リスト内の各 Pauli の共役を返す。

copy

copy()

GitHub

現在のオペレータのディープコピーを作成する。

delete

delete(ind, qubit=False)

GitHub

テーブルから Pauli 行を削除したコピーを返す。

量子ビットを削除する場合、量子ビットのインデックスは、 X および Z 配列の列インデックスと同じになります。

パラメーター

  • ind (int orlist) – インデックスを削除します。
  • qubit (bool) – もし True ならqubit列を削除、そうでなければPauli行を削除 (デフォルト: False)。

戻り値

エントリを削除した結果のテーブル。

戻りの型

PauliList

レイズ

QiskitError - ind が配列のサイズや量子ビット数の範囲外である場合。

dot

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

GitHub

リスト中の各Pauliに対してother∘selfの合成を返す。

パラメーター

  • other (PauliList) – another PauliList.
  • qargs (None or list) – ドット積を適用する量子ビット (デフォルト: None)。
  • inplace (bool) – True の場合はインプレースで更新する(デフォルト: False )。

戻り値

作曲されたパウリのリスト

戻りの型

PauliList

レイズ

QiskitError - に変換できない場合、 PauliList, は現在のリストと同じ数のポーリを1つも持っていないか、指定された qargs に対して間違った数のクビットを持っている。

equiv

equiv(other)

GitHub

大域的位相までのパウリ同値の入力比較。

パラメーター

other (PauliList orPauli) – 比較オブジェクト。

戻り値

** True 、または False の配列。**

現在のテーブルの

戻りの型

np.ndarray

evolve

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

GitHub

ハイゼンベルグ(デフォルト)またはシュレーディンガーピクチャーによるクリフォードによるパウリの進化を行い、進化したパウリを返す。

シュレーディンガー図法の展開は、パラメータ frame='s' を渡すことで選択できる。 このオプションの方が計算が速い。

ハイゼンベルクのピクチャーはパウリを P=C.P.CP^\prime = C^\dagger.P.C

シュレーディンガー像はパウリを P=C.P.CP^\prime = C.P.C^\dagger

パラメーター

  • other (Pauli orClifford orQuantumCircuit) – 進化するクリフォード演算子。
  • qargs (list) – クリフォードを適用する量子ビットのリスト。
  • frame (string) – 'h' ハイゼンベルグ(デフォルト)またはシュレーディンガーフレームワークの場合は 's'

戻り値

パウリ C.P.CC^\dagger.P.C (ハイゼンベルクの絵)またはパウリ C.P.CC.P.C^\dagger (シュレーディンガーの絵)。

戻りの型

PauliList

レイズ

QiskitError - もしqubitsとqargsのクリフォード数が一致しない場合。

expand

expand(other)

GitHub

リスト中の各 Pauli の展開積を返す。

パラメーター

other (PauliList) – another PauliList.

戻り値

テンソル積ポーリのリスト。

戻りの型

PauliList

レイズ

QiskitError - 他のリストが PauliList, に変換できない場合は、現在のリストと同じ数のパウリを1つも持たない。

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

シンプレクティックなデータから PauliList を構築する。

パラメーター

  • z (np.ndarray) – 2D boolean Numpy配列。
  • x (np.ndarray) – 2D boolean Numpy配列。
  • phase (np.ndarray or None) – 1D Z_4 からの整数配列。

戻り値

構築された PauliList。

戻りの型

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

PauliList を、パウリ弦の通奏低音の集合に分割する。

パラメーター

qubit_wise (bool) –

整流則を演算子全体に適用するか、量子ビット単位で適用するか。 例:

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

戻り値

各 PauliList が通約パウリ作用素を含む PauliLists のリスト。

戻りの型

リスト PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

PauliList、互いに量子ビット単位でコミュートするパウリ文字列の集合に分割する。

戻り値

各 PauliList が可換パウリ演算子を含む PauliLists のリスト。

戻りの型

リスト PauliList ]

input_dims

input_dims(qargs=None)

GitHub

指定されたサブシステムの入力次元のタプルを返す。

insert

insert(ind, value, qubit=False)

GitHub

ポーリスをテーブルに挿入する。

量子ビットを挿入する場合、量子ビットのインデックスは、 X および Z 配列の列インデックスと同じになります。

パラメーター

  • ind (int) – インデックスを挿入する。
  • value (PauliList) – 値を挿入する。
  • qubit (bool) – もし True ならqubit列を挿入、そうでなければPauli行を挿入 (デフォルト: False)。

戻り値

エントリーが挿入された結果のテーブル。

戻りの型

PauliList

レイズ

QiskitError - 挿入インデックスが無効な場合。

inverse

inverse()

GitHub

リスト中の各 Pauli の逆数を返す。

label_iter

label_iter()

GitHub

ラベル表現イテレータを返します。

これは遅延イテレータであり、各行が使用されるときにのみ文字列ラベルに変換する。 テーブル全体をラベルに変換するには to_labels() メソッドを使います。

戻り値

PauliList のラベル・イテレータ・オブジェクト。

戻りの型

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

行列表現イテレータを返します。

これは遅延イテレータで、各行が使用されるときにのみパウリ行列表現に変換される。 表全体を行列に変換するには to_matrix() メソッドを使います。

パラメーター

sparse (bool) – 指定された場合 True、疎なCSR行列を返す。そうでない場合は、NumPy配列の行列を返す(デフォルト: False

戻り値

の行列イテレータオブジェクト PauliList。

戻りの型

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

この PauliList の非整合グラフを作成する。

これにより、測定演算子のグルーピング問題は、グラフの色付け問題に変換される。 構築されたグラフには、各パウリに1つのノードが含まれる。 ノードは2つのパウリ項のうち、"commute "するもの同士をつなぐ。

パラメーター

qubit_wise (bool) – 整流則を演算子全体に適用するか、量子ビット単位で適用するか。

戻り値

各パウリのノードと辺を持つ非整合グラフ

非整合関係を示す。 各ノードは、そのデータで対応するパウリ項のインデックスを保持する。 グラフのエッジはデータを保持しない。

戻りの型

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

指定されたサブシステムの出力次元のタプルを返す。

power

power(n)

GitHub

演算子をそれ自身と n 回組み合わせて返します。

パラメーター

n (int) – self ( n>0 ) と合成する回数。

戻り値

n回合成された演算子。

戻りの型

Clifford

レイズ

QiskitError - 演算子の入力と出力の次元が等しくない場合、またはべき乗が正の整数でない場合。

reshape

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

GitHub

入出力サブシステムの寸法を変更した浅いコピーを返す。

パラメーター

  • input_dims (None or tuple) – 新しいサブシステムの入力寸法。 None の場合、元の入力ディムが保持される [Default:なし]。
  • output_dims (None or tuple) – 新しいサブシステムの出力寸法。 None の場合、元の出力ディムが保持される [Default:なし]。
  • num_qubits (None or int) – N-qubit 演算子への整形[デフォルト:なし]。

戻り値

入出力寸法を整形した self を返す。

戻りの型

BaseOperator

レイズ

QiskitError - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。

sort

sort(weight=False, phase=False)

GitHub

テーブルの行を並べ替える。

デフォルトのソート方法は、量子ビット番号による辞書式ソートです。 重みkwargを使うことで、出力はさらにパウリに含まれる非同一項の数でソートすることができる。

すべての2量子ビット・ポーリスをランダムに並べ替えることを考える

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

パラメーター

  • weight (bool) – True (デフォルト: )。 False
  • phase (bool) – オプションで、重量または順序の前に位相でソートする (デフォルト: False)。

戻り値

元のテーブルのソートされたコピー。

戻りの型

PauliList

tensor

tensor(other)

GitHub

リストの各 Pauli とのテンソル積を返す。

パラメーター

other (PauliList) – another PauliList.

戻り値

テンソル積ポーリのリスト。

戻りの型

PauliList

レイズ

QiskitError - 他のリストが PauliList, に変換できない場合は、現在のリストと同じ数のパウリを1つも持たない。

to_labels

to_labels(array=False)

GitHub

PauliList をパウリ文字列ラベルのリストに変換する。

array=True kwargを使用すると、Numpyのラベル配列の全メモリを事前に確保するため、 PauliLists の変換がより効率的になります。

ラベル
シンプレクティック
クロス集計
"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}

パラメーター

array (bool) – True の場合は Numpy 配列を返し、そうでない場合はリストを返す(デフォルト: )。 False

戻り値

PauliList、ラベル形式の行。

戻りの型

リストまたは配列

to_matrix

to_matrix(sparse=False, array=False)

GitHub

パウリ行列のリストまたは配列に変換する。

PauliLists array=True kwargを使用すると、 Numpyの行列配列の全メモリを事前に確保するため、より効率的です。 rank-3

ラベル
シンプレクティック
クロス集計
"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}

パラメーター

  • sparse (bool) – もし True ならば疎な CSR 行列を返し、そうでなければ密な Numpy 配列を返します (デフォルト: False)。
  • array (bool) – True の場合は numpy 配列として返し、そうでない場合は Numpy 配列のリストを返す (デフォルト: )。 rank-3 False

戻り値

および array=False の場合の密な sparse=Falseパウリ行列のリスト。 list: および array=False の場合の疎な sparse=Trueパウリ行列のリスト。 array: がの場合 array=True、密な rank-3 次元のパウリ行列の配列。

戻りの型

リスト

transpose

transpose()

GitHub

リスト中の各 Pauli の転置行列を返す。

unique

unique(return_index=False, return_counts=False)

GitHub

テーブルからユニーク・ポーリスを戻す。

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

パラメーター

  • return_index (bool) – その場合 True、一意の配列となるインデックスも返す。 (既定値: False)
  • return_counts (bool) – True の場合、各ユニーク・アイテムが表に現れる回数も返す。

戻り値

固有

ユニーク行のテーブル。

unique_indices: np.ndarray 任意

元の配列に最初に現れる一意な値のインデックス。 return_indexTrue の場合のみ提供される。

unique_counts: np.array 任意

一意な値のそれぞれが、元の配列に現れる回数。 return_countsTrue の場合のみ提供される。

戻りの型

PauliList

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。