PauliList
class qiskit.quantum_info.PauliList(data)
ベース BasePauli LinearMixin、 GroupMixin
N量子ビットのパウリ演算子のリスト。
このクラスは Pauli 演算子のリストを効率的に表現します。 を返す 1D numpy配列インデックスをサポートしています。 Pauli を返します。 PauliList を返します。
初期化
PauliList オブジェクトはいくつかの方法で初期化できる。
PauliList(list[str])ここで、文字列は
Pauli.
PauliList(Pauli) and PauliList(list[Pauli])パウリは
Pauli.
PauliList.from_symplectic(z, x, phase)ここで、
zとxは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
anticommutes
anticommutes(other, qargs=None)
もしもう一方のパウリ演算子がこのパウリ演算子と反交換関係にあるならば True 、戻る。
パラメーター
戻り値
True ポーリスが通勤しない場合は、 False 。
戻りの型
anticommutes_with_all
anticommutes_with_all(other)
もう一方のパウリリストと反交換する行のインデックスを返す。
other が複数行の Pauli リストである場合、返されるベクトルは、現在の PauliList の行のうち、他の行のすべての Pauli と反行する行のインデックスを示す。 条件を満たす行がない場合、返される配列は空になります。
パラメーター
other (PauliList) – シングル・パウリまたはマルチ・ロー PauliList。
戻り値
反コミューティング行のインデックス配列。
戻りの型
argsort
argsort(weight=False, phase=False)
テーブルの行をソートするためのインデックスを返す。
デフォルトのソート方法は、量子ビット番号による辞書式ソートです。 重みkwargを使うことで、出力はさらにパウリに含まれる非同一項の数でソートすることができる。
パラメーター
戻り値
テーブルをソートするためのインデックス。
戻りの型
commutes
commutes(other, qargs=None)
他のパウリとコミュートする各パウリに対して真を返す。
パラメーター
戻り値
True ポーリスが通勤していれば、 False 、反通勤していれば。
戻りの型
commutes_with_all
commutes_with_all(other)
other に一致する行のインデックスを返す。
other が複数行の Pauli リストである場合、返されるベクトルは、現在の PauliList の行のうち、他の行のすべての Pauli と commute する行のインデックスを示す。 条件を満たす行がない場合、返される配列は空になります。
パラメーター
other (PauliList) – シングル・パウリまたはマルチ・ロー PauliList。
戻り値
通勤行のインデックス配列。
戻りの型
compose
compose(other, qargs=None, front=False, inplace=False)
リスト中の各Pauliのself∘otherの合成を返す。
パラメーター
- other (PauliList) – another PauliList.
- qargs (None or list) – ドット積を適用する量子ビット (デフォルト:
None)。 - front (bool) – Trueの場合、ドット合成法を使う[デフォルト:
False]. - inplace (bool) –
True、インプレースで更新する(デフォルト: )。False
戻り値
作曲されたパウリのリスト
戻りの型
レイズ
QiskitError - に変換できない場合、 PauliList, は現在のリストと同じ数のポーリを1つも持っていないか、指定された qargs に対して間違った数のクビットを持っている。
conjugate
copy
delete
delete(ind, qubit=False)
テーブルから Pauli 行を削除したコピーを返す。
量子ビットを削除する場合、量子ビットのインデックスは、 X および Z 配列の列インデックスと同じになります。
パラメーター
- ind (int orlist) – インデックスを削除します。
- qubit (bool) – もし
Trueならqubit列を削除、そうでなければPauli行を削除 (デフォルト:False)。
戻り値
エントリを削除した結果のテーブル。
戻りの型
レイズ
QiskitError - ind が配列のサイズや量子ビット数の範囲外である場合。
dot
dot(other, qargs=None, inplace=False)
リスト中の各Pauliに対してother∘selfの合成を返す。
パラメーター
- other (PauliList) – another PauliList.
- qargs (None or list) – ドット積を適用する量子ビット (デフォルト:
None)。 - inplace (bool) – True の場合はインプレースで更新する(デフォルト:
False)。
戻り値
作曲されたパウリのリスト
戻りの型
レイズ
QiskitError - に変換できない場合、 PauliList, は現在のリストと同じ数のポーリを1つも持っていないか、指定された qargs に対して間違った数のクビットを持っている。
equiv
equiv(other)
大域的位相までのパウリ同値の入力比較。
パラメーター
other (PauliList orPauli) – 比較オブジェクト。
戻り値
** True 、または False の配列。**
現在のテーブルの
戻りの型
np.ndarray
evolve
evolve(other, qargs=None, frame='h')
ハイゼンベルグ(デフォルト)またはシュレーディンガーピクチャーによるクリフォードによるパウリの進化を行い、進化したパウリを返す。
シュレーディンガー図法の展開は、パラメータ frame='s' を渡すことで選択できる。 このオプションの方が計算が速い。
ハイゼンベルクのピクチャーはパウリを 。
シュレーディンガー像はパウリを 。
パラメーター
- other (Pauli orClifford orQuantumCircuit) – 進化するクリフォード演算子。
- qargs (list) – クリフォードを適用する量子ビットのリスト。
- frame (string) –
'h'ハイゼンベルグ(デフォルト)またはシュレーディンガーフレームワークの場合は's'。
戻り値
パウリ (ハイゼンベルクの絵)またはパウリ (シュレーディンガーの絵)。
戻りの型
レイズ
QiskitError - もしqubitsとqargsのクリフォード数が一致しない場合。
expand
expand(other)
リスト中の各 Pauli の展開積を返す。
パラメーター
other (PauliList) – another PauliList.
戻り値
テンソル積ポーリのリスト。
戻りの型
レイズ
QiskitError - 他のリストが PauliList, に変換できない場合は、現在のリストと同じ数のパウリを1つも持たない。
from_symplectic
classmethod from_symplectic(z, x, phase=0)
シンプレクティックなデータから PauliList を構築する。
パラメーター
- z (np.ndarray) – 2D boolean Numpy配列。
- x (np.ndarray) – 2D boolean Numpy配列。
- phase (np.ndarray or None) – 1D Z_4 からの整数配列。
戻り値
構築された PauliList。
戻りの型
group_commuting
group_commuting(qubit_wise=False)
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 のリスト。
戻りの型
group_qubit_wise_commuting
group_qubit_wise_commuting()
PauliList、互いに量子ビット単位でコミュートするパウリ文字列の集合に分割する。
戻り値
各 PauliList が可換パウリ演算子を含む PauliLists のリスト。
戻りの型
input_dims
insert
insert(ind, value, qubit=False)
ポーリスをテーブルに挿入する。
量子ビットを挿入する場合、量子ビットのインデックスは、 X および Z 配列の列インデックスと同じになります。
パラメーター
- ind (int) – インデックスを挿入する。
- value (PauliList) – 値を挿入する。
- qubit (bool) – もし
Trueならqubit列を挿入、そうでなければPauli行を挿入 (デフォルト:False)。
戻り値
エントリーが挿入された結果のテーブル。
戻りの型
レイズ
QiskitError - 挿入インデックスが無効な場合。
inverse
label_iter
label_iter()
ラベル表現イテレータを返します。
これは遅延イテレータであり、各行が使用されるときにのみ文字列ラベルに変換する。 テーブル全体をラベルに変換するには to_labels() メソッドを使います。
戻り値
PauliList のラベル・イテレータ・オブジェクト。
戻りの型
LabelIterator
matrix_iter
matrix_iter(sparse=False)
行列表現イテレータを返します。
これは遅延イテレータで、各行が使用されるときにのみパウリ行列表現に変換される。 表全体を行列に変換するには to_matrix() メソッドを使います。
パラメーター
sparse (bool) – 指定された場合 True、疎なCSR行列を返す。そうでない場合は、NumPy配列の行列を返す(デフォルト: False)
戻り値
の行列イテレータオブジェクト PauliList。
戻りの型
MatrixIterator
noncommutation_graph
noncommutation_graph(qubit_wise)
この PauliList の非整合グラフを作成する。
これにより、測定演算子のグルーピング問題は、グラフの色付け問題に変換される。 構築されたグラフには、各パウリに1つのノードが含まれる。 ノードは2つのパウリ項のうち、"commute "するもの同士をつなぐ。
パラメーター
qubit_wise (bool) – 整流則を演算子全体に適用するか、量子ビット単位で適用するか。
戻り値
各パウリのノードと辺を持つ非整合グラフ
非整合関係を示す。 各ノードは、そのデータで対応するパウリ項のインデックスを保持する。 グラフのエッジはデータを保持しない。
戻りの型
output_dims
power
power(n)
演算子をそれ自身と n 回組み合わせて返します。
パラメーター
n (int) – self ( n>0 ) と合成する回数。
戻り値
n回合成された演算子。
戻りの型
レイズ
QiskitError - 演算子の入力と出力の次元が等しくない場合、またはべき乗が正の整数でない場合。
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
入出力サブシステムの寸法を変更した浅いコピーを返す。
パラメーター
- 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)
テーブルの行を並べ替える。
デフォルトのソート方法は、量子ビット番号による辞書式ソートです。 重み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']パラメーター
戻り値
元のテーブルのソートされたコピー。
戻りの型
tensor
tensor(other)
リストの各 Pauli とのテンソル積を返す。
パラメーター
other (PauliList) – another PauliList.
戻り値
テンソル積ポーリのリスト。
戻りの型
レイズ
QiskitError - 他のリストが PauliList, に変換できない場合は、現在のリストと同じ数のパウリを1つも持たない。
to_labels
to_labels(array=False)
PauliList をパウリ文字列ラベルのリストに変換する。
array=True kwargを使用すると、Numpyのラベル配列の全メモリを事前に確保するため、 PauliLists の変換がより効率的になります。
ラベル | シンプレクティック | クロス集計 |
|---|---|---|
"I" | ||
"X" | ||
"Y" | ||
"Z" |
パラメーター
array (bool) – True の場合は Numpy 配列を返し、そうでない場合はリストを返す(デフォルト: )。 False
戻り値
PauliList、ラベル形式の行。
戻りの型
to_matrix
to_matrix(sparse=False, array=False)
パウリ行列のリストまたは配列に変換する。
PauliLists array=True kwargを使用すると、 Numpyの行列配列の全メモリを事前に確保するため、より効率的です。 rank-3
ラベル | シンプレクティック | クロス集計 |
|---|---|---|
"I" | ||
"X" | ||
"Y" | ||
"Z" |
パラメーター
- sparse (bool) – もし
Trueならば疎な CSR 行列を返し、そうでなければ密な Numpy 配列を返します (デフォルト:False)。 - array (bool) –
Trueの場合は numpy 配列として返し、そうでない場合は Numpy 配列のリストを返す (デフォルト: )。 rank-3False
戻り値
および array=False の場合の密な sparse=Falseパウリ行列のリスト。 list: および array=False の場合の疎な sparse=Trueパウリ行列のリスト。 array: がの場合 array=True、密な rank-3 次元のパウリ行列の配列。
戻りの型
transpose
unique
unique(return_index=False, return_counts=False)
テーブルからユニーク・ポーリスを戻す。
例
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_index が True の場合のみ提供される。
unique_counts: np.array 任意
一意な値のそれぞれが、元の配列に現れる回数。 return_counts が True の場合のみ提供される。
戻りの型