Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Bases: BasePauli, LinearMixin, GroupMixin

N-쿼비트 폴리 연산자 목록.

이 클래스는 연산자 목록의 효율적인 표현입니다 Pauli 연산자 목록을 효율적으로 표현합니다. 정수 인덱스의 경우 a를 반환하는 1D numpy 배열 인덱싱을 지원합니다 Pauli 를 반환하거나, 정수 인덱스의 경우 a 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_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) – 폴리스에 대한 입력 데이터입니다. 입력이 목록인 경우 목록의 각 항목은 폴리 객체 또는 폴리 문자열이어야 합니다.

레이즈

QiskitError – 입력 배열의 형상이 유효하지 않은 경우.

추가 정보:

입력 배열은 복사되지 않으므로 여러 폴리 테이블이 동일한 기본 배열을 공유할 수 있습니다.


속성

dim

튜플(입력_셰이프, 출력_셰이프)을 반환합니다.

num_qubits

N-큐비트 연산자인 경우 큐비트 수를 반환하고, 그렇지 않으면 None을 반환합니다.

phase

의 위상 지수를 반환합니다 PauliList.

qargs

연산자에 대한 qarg를 반환합니다.

settings

설정을 반환합니다.

shape

전체 모양은 array()

size

테이블의 폴리 행 수입니다.

x

심플렉틱 표현을 위한 X 배열입니다.

z

심플렉틱 표현을 위한 z 배열입니다.


메소드

adjoint

adjoint()

GitHub

목록에 있는 각 폴리의 부속물을 반환합니다.

anticommutes

anticommutes(other, qargs=None)

GitHub

다른 파울리 연산자가 이 파울리 연산자와 반교환 관계를 이룬다면 True 반환한다.

매개변수

  • other (PauliList) – 또 다른 PauliList 운영자.
  • qargs (list) – 도트 제품을 적용할 큐비트(기본값: None)를 선택합니다.

리턴

True 폴리스가 출퇴근을 하지 않는 경우 False .

리턴 유형

부울

anticommutes_with_all

anticommutes_with_all(other)

GitHub

다른 파울리 리스트와 항교환하는 행의 인덱스를 반환합니다.

other 이 다중 행 폴리인 경우 현재 PauliList 의 반환된 벡터 인덱스 행이 다른 모든 폴리와 역교차하는 행을 나열합니다. 조건을 만족하는 행이 없으면 반환된 배열은 비어 있습니다.

매개변수

other (PauliList) – 단일 폴리 또는 다중 행 PauliList.

리턴

반통근 행의 인덱스 배열입니다.

리턴 유형

배열

argsort

argsort(weight=False, phase=False)

GitHub

테이블의 행을 정렬하기 위한 인덱스를 반환합니다.

기본 정렬 방법은 큐비트 번호에 의한 사전식 정렬입니다. 가중치 kwarg를 사용하면 폴리에 있는 비동일성 용어의 수에 따라 출력을 추가로 정렬할 수 있으며, 여기서 주어진 가중치의 모든 폴리 집합은 여전히 사전순으로 정렬됩니다.

매개변수

  • weight (bool) – True (기본값: False)인 경우 선택적으로 무게별로 정렬합니다.
  • phase (bool) – 선택적으로 무게 또는 순서에 따라 단계별로 정렬합니다(기본값: False).

리턴

테이블 정렬을 위한 인덱스입니다.

리턴 유형

배열

commutes

commutes(other, qargs=None)

GitHub

서로 통근하는 각 폴리에 대해 True를 반환합니다.

매개변수

  • other (PauliList) – 또 다른 PauliList 운영자.
  • qargs (list) – 도트 제품을 적용할 큐비트(기본값: None)를 선택합니다.

리턴

True 폴리스가 출퇴근하는 경우 False .

리턴 유형

부울

commutes_with_all

commutes_with_all(other)

GitHub

출퇴근하는 행의 인덱스를 반환합니다 other.

other 이 다중 행 폴리인 경우 현재 PauliList 의 반환된 벡터 인덱스 행이 다른 모든 폴리와 통근하는 행을 나열합니다. 조건을 만족하는 행이 없으면 반환된 배열은 비어 있습니다.

매개변수

other (PauliList) – 단일 폴리 또는 다중 행 PauliList.

리턴

출퇴근 행의 인덱스 배열입니다.

리턴 유형

배열

compose

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

GitHub

목록의 각 폴리에 대해 자기∘다른 구성을 반환합니다.

매개변수

  • other (PauliList) – 또 다른 PauliList.
  • qargs (None or list) – 도트 제품을 적용할 큐비트를 선택합니다(기본값: None).
  • front (bool) – True인 경우 점 합성 방법 [기본값을 사용합니다. False].
  • inplace (bool) – True 제자리에서 업데이트하는 경우(기본값: False).

리턴

구성된 폴리스 목록입니다.

리턴 유형

PauliList

레이즈

qargsQiskitError – 다른 것을 PauliList, 로 변환할 수 없는 경우, 해당 리스트가 1개의 파울리 또는 현재 리스트와 동일한 수의 파울리를 갖지 않거나, 지정된 값에 대해 큐비트 수가 올바르지 않은 경우입니다.

conjugate

conjugate()

GitHub

목록에 있는 각 폴리의 활용형을 반환합니다.

copy

copy()

GitHub

현재 운영자의 딥 카피를 만듭니다.

delete

delete(ind, qubit=False)

GitHub

테이블에서 폴리 행이 삭제된 사본을 반환합니다.

큐비트를 삭제할 때 큐비트 인덱스는 기본 XZ 배열의 열 인덱스와 동일합니다.

매개변수

  • ind (int orlist) – 인덱스를 삭제합니다.
  • qubit (bool) – True 이면 쿼비트 열을 삭제하고, 그렇지 않으면 폴리 행을 삭제합니다(기본값: False).

리턴

를 입력하면 항목이 제거된 결과 테이블이 표시됩니다.

리턴 유형

PauliList

레이즈

QiskitError – 배열 크기나 큐비트 수에 대해 가 범위를 벗어난 경우 ind .

dot

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

GitHub

목록의 각 폴리에 대해 다른∘자신의 구성을 반환합니다.

매개변수

  • other (PauliList) – 또 다른 PauliList.
  • qargs (None or list) – 도트 제품을 적용할 큐비트를 선택합니다(기본값: None).
  • inplace (bool) – True인 경우 제자리에서 업데이트(기본값: False).

리턴

구성된 폴리스 목록입니다.

리턴 유형

PauliList

레이즈

qargsQiskitError – 다른 것을 PauliList, 로 변환할 수 없는 경우, 해당 리스트가 1개의 파울리 또는 현재 리스트와 동일한 수의 파울리를 갖지 않거나, 지정된 값에 대해 큐비트 수가 올바르지 않은 경우입니다.

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 – 큐비트와 qarg의 클리포드 수가 일치하지 않는 경우.

expand

expand(other)

GitHub

목록에 있는 각 폴리의 확장 제품을 반환합니다.

매개변수

other (PauliList) – 또 다른 PauliList.

리턴

텐서 제품 폴리스의 목록입니다.

리턴 유형

PauliList

레이즈

QiskitError – 다른 목록을 PauliList, 로 변환할 수 없는 경우, 해당 목록에는 1개의 파울리 또는 현재 목록과 동일한 수의 파울리가 포함되어 있지 않습니다.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

심플렉틱 데이터에서 PauliList 을 구축합니다.

매개변수

  • z (np.ndarray) – 2D 부울 넘피 배열입니다.
  • x (np.ndarray) – 2D 부울 넘피 배열입니다.
  • 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'])]

리턴

PauliLists 목록에서 각 PauliList 에는 출퇴근 폴리 운영자가 포함되어 있습니다.

리턴 유형

목록 [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

PauliList 을 상호 큐비트 단위로 통근하는 폴리 문자열 집합으로 분할합니다.

리턴

PauliLists 목록으로, 각 PauliList 에는 환승 가능한 폴리 연산자가 포함되어 있습니다.

리턴 유형

목록 [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 입력 차원의 튜플을 반환합니다.

insert

insert(ind, value, qubit=False)

GitHub

폴리스를 테이블에 삽입합니다.

큐비트를 삽입할 때 큐비트 인덱스는 기본 XZ 배열의 열 인덱스와 동일합니다.

매개변수

  • ind (int) – 인덱스에 삽입합니다.
  • value (PauliList) – 값을 삽입합니다.
  • qubit (bool) – True 이면 큐비트 열을 삽입하고, 그렇지 않으면 폴리 행을 삽입합니다(기본값: False).

리턴

항목이 삽입된 결과 테이블을 표시합니다.

리턴 유형

PauliList

레이즈

QiskitError – 삽입 인덱스가 유효하지 않은 경우.

inverse

inverse()

GitHub

목록에 있는 각 폴리의 역을 반환합니다.

label_iter

label_iter()

GitHub

라벨 표현 이터레이터를 반환합니다.

이것은 각 행이 사용될 때만 문자열 레이블로 변환하는 지연 반복기입니다. 전체 테이블을 레이블로 변환하려면 to_labels() 메서드를 사용합니다.

리턴

레이블 반복기 객체를 PauliList.

리턴 유형

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

행렬 표현 이터레이터를 반환합니다.

이것은 각 행이 사용될 때만 폴리 행렬 표현으로 변환하는 지연 반복기입니다. 전체 테이블을 행렬로 변환하려면 to_matrix() 메서드를 사용합니다.

매개변수

sparse (bool) – 선택적으로 스파스 CSR 행렬을 반환하고, 그렇지 True않으면 NumPy 배열 행렬을 반환합니다(기본값: False)

리턴

행렬 이터레이터 객체를 PauliList.

리턴 유형

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

이것의 비교차 그래프를 만듭니다 PauliList.

이렇게 하면 측정 연산자 그룹화 문제가 그래프 색칠 문제로 변환됩니다. 구성된 그래프에는 각 폴리에 대해 하나의 노드가 포함됩니다. 노드는 _not_ 통근하는 두 개의 폴리 항에 대해 연결됩니다.

매개변수

qubit_wise (bool) – 연산자 전체에 정류 규칙을 적용할지, 아니면 큐비트 단위로 적용할지 여부를 설정합니다.

리턴

각 폴리와 에지에 대한 노드가 있는 비교차 그래프입니다

는 정류 관계가 아닌 관계를 나타냅니다. 각 노드는 해당 데이터에 해당하는 폴리 용어의 인덱스를 보유하게 됩니다. 그래프의 가장자리에는 데이터가 없습니다.

리턴 유형

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 출력 차원의 튜플을 반환합니다.

power

power(n)

GitHub

연산자를 n번 자기 자신과 합성한 결과를 반환합니다.

매개변수

n (int) – 셀프 작성 횟수 ( n>0 ).

리턴

n-회 구성 연산자입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 연산자의 입력 및 출력 차원이 같지 않거나, 지수가 양의 정수가 아닌 경우.

reshape

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

GitHub

입력 및 출력 하위 시스템 치수가 재구성된 얕은 복사본을 반환합니다.

매개변수

  • input_dims (None or tuple) – 새로운 하위 시스템 입력 차원. None인 경우 원래 입력이 희미하게 유지됩니다. [기본값: None].
  • output_dims (None or tuple) – 새로운 하위 시스템 출력 차원. None인 경우 원래 출력이 흐려집니다. [기본값: None].
  • num_qubits (None or int) – n-큐비트 연산자로 재형성 [기본값입니다: 없음].

리턴

는 입력 및 출력 치수가 재형성된 자기를 반환합니다.

리턴 유형

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

목록에 있는 각 폴리에 대해 텐서 곱을 반환합니다.

매개변수

other (PauliList) – 또 다른 PauliList.

리턴

텐서 제품 폴리스의 목록입니다.

리턴 유형

PauliList

레이즈

QiskitError – 다른 목록을 PauliList, 로 변환할 수 없는 경우, 해당 목록에는 1개의 파울리 또는 현재 목록과 동일한 수의 파울리가 포함되어 있지 않습니다.

to_labels

to_labels(array=False)

GitHub

PauliList 을 목록 폴리 문자열 레이블로 변환합니다.

대규모 PauliLists 변환의 경우 array=True kwarg를 사용하는 것이 전체 Numpy 레이블 배열에 메모리를 미리 할당하므로 더 효율적입니다.

레이블
심플렉틱
매트릭스
"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를 사용하는 것이 전체 rank-3 Numpy 행렬 배열을 미리 메모리에 할당하므로 더 효율적입니다.

레이블
심플렉틱
매트릭스
"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 이면 rank-3 넘피 배열로 반환하고, 그렇지 않으면 넘피 배열의 목록을 반환합니다(기본값: False).

리턴

sparse=False``array=False 일 때의 밀집 파울리 행렬 목록. 목록: 및 array=False 일 때의 스파스 sparse=True파울리 행렬 목록. 배열: 가 rank-3 인 경우 array=True, 밀집된 파울리 행렬 배열.

리턴 유형

목록

transpose

transpose()

GitHub

목록에 있는 각 폴리의 조옮김을 반환합니다.

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 이면 각 고유 항목이 표에 표시되는 횟수도 반환합니다.

리턴

고유

고유 행의 테이블입니다.

고유_인덱스: np.ndarray, 선택 사항

원본 배열에서 고유 값이 처음 발생한 인덱스입니다. return_indexTrue 인 경우에만 제공됩니다.

고유_counts: np.array, 선택 사항

각 고유 값이 원래 배열에 나타나는 횟수입니다. return_countsTrue 인 경우에만 제공됩니다.

리턴 유형

PauliList

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.