Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Bases: BasePauli, LinearMixin, GroupMixin

Lista de operadores Pauli de N-qubit.

Essa classe é uma representação eficiente de uma lista de operadores Pauli operadores. Ele suporta 1D indexação de matriz numpy retornando um Pauli para índices inteiros ou um PauliList para índices de fatia ou lista.

Inicialização

Um objeto PauliList pode ser inicializado de várias maneiras.

PauliList(list[str])

em que as cadeias de caracteres são a mesma representação com Pauli.

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

onde Pauli está Pauli.

PauliList.from_symplectic(z, x, phase)

em que z e x são booleanos bidimensionais numpy.ndarrays e phase é um número inteiro em [0, 1, 2, 3].

Por exemplo,

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

Acesso a dados

As Paulis individuais podem ser acessadas e atualizadas usando o operador [] que aceita inteiros, listas ou fatias para selecionar subconjuntos de PauliList. Se for fornecido um número inteiro, ele retornará Pauli e não 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'])

Iteração

As linhas da tabela Pauli podem ser iteradas como uma lista. A iteração também pode ser feita usando o rótulo ou a representação matricial de cada linha usando os botões label_iter() e matrix_iter() métodos.

Inicialize o site PauliList.

Parâmetros

data (Pauli orlist) – dados de entrada para a Paulis. Se a entrada for uma lista, cada item da lista deverá ser um objeto Pauli ou um str Pauli.

Aumentos

QiskitError - se a matriz de entrada tiver formato inválido.

Informações adicionais:

A matriz de entrada não é copiada, portanto, várias tabelas Pauli podem compartilhar a mesma matriz subjacente.


Atributos

dim

Retorna uma tupla (input_shape, output_shape).

num_qubits

Retorna o número de qubits se for um operador N-qubit ou None caso contrário.

phase

Retorna o expoente de fase do site PauliList.

qargs

Retorna os qargs do operador.

settings

Configurações de retorno.

shape

A forma completa do array()

size

O número de linhas de Pauli na tabela.

x

A matriz x para a representação simétrica.

z

A matriz z para a representação simpática.


Métodos

adjoint

adjoint()

GitHub

Retorna o adjunto de cada Pauli na lista.

anticommutes

anticommutes(other, qargs=None)

GitHub

Retorne True se o outro operador de Pauli anticomuta com este.

Parâmetros

  • other (PauliList) – outro operador PauliList.
  • qargs (list) – qubits aos quais aplicar o produto de pontos (padrão: None).

Retorna

True se a Paulis não se desloca para o trabalho, False se eles se deslocam para o trabalho.

Tipo de retorno

bool

anticommutes_with_all

anticommutes_with_all(other)

GitHub

Retorne os índices das linhas que anticomutam com a outra lista de Pauli.

Se other for uma lista de Pauli com várias linhas, o vetor retornado indexa as linhas da lista PauliList atual que são anticomutativas com todos os Paulis da outra lista. Se nenhuma linha satisfizer a condição, a matriz retornada estará vazia.

Parâmetros

other (PauliList) – um único Pauli ou várias linhas PauliList.

Retorna

matriz de índice das linhas de antitransporte.

Tipo de retorno

Matriz

argsort

argsort(weight=False, phase=False)

GitHub

Retorna índices para classificar as linhas da tabela.

O método de classificação padrão é a classificação lexicográfica por número de qubit. Ao usar o kwarg de peso, o resultado também pode ser classificado pelo número de termos não idênticos no Pauli, em que o conjunto de todos os Paulis de um determinado peso ainda é ordenado lexicograficamente.

Parâmetros

  • weight (bool) – Opcionalmente, classifique por peso se for True (Padrão: False).
  • phase (bool) – Opcionalmente, classifique por fase antes do peso ou por ordem (Padrão: False).

Retorna

os índices para classificar a tabela.

Tipo de retorno

Matriz

commutes

commutes(other, qargs=None)

GitHub

Retorna True para cada Pauli que comuta com outro.

Parâmetros

  • other (PauliList) – outro operador PauliList.
  • qargs (list) – qubits aos quais aplicar o produto de pontos (padrão: None).

Retorna

True se a Paulis se desloca para o trabalho, False se eles são contra o trabalho.

Tipo de retorno

bool

commutes_with_all

commutes_with_all(other)

GitHub

Retorna os índices das linhas que comutam other.

Se other for uma lista de Pauli com várias linhas, o vetor retornado indexa as linhas do PauliList atual que comutam com todos os Paulis em outro. Se nenhuma linha satisfizer a condição, a matriz retornada estará vazia.

Parâmetros

other (PauliList) – um único Pauli ou várias linhas PauliList.

Retorna

matriz de índice das linhas de comutação.

Tipo de retorno

Matriz

compose

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

GitHub

Retorna a composição self∘other para cada Pauli na lista.

Parâmetros

  • other (PauliList) – outro PauliList.
  • qargs (None or list) – qubits aos quais aplicar o produto de pontos (Padrão: None).
  • front (bool) – Se verdadeiro, use o método de composição de pontos [. Padrão: False].
  • inplace (bool) – Se True atualizar no local (padrão: False).

Retorna

a lista de Paulis compostos.

Tipo de retorno

PauliList

Aumentos

QiskitError - se outro não puder ser convertido em um PauliList, não tiver 1 ou o mesmo número de Paulis que a lista atual, ou tiver o número errado de qubits para o qargs especificado.

conjugate

conjugate()

GitHub

Retorna o conjugado de cada Pauli na lista.

copy

copy()

GitHub

Faça uma cópia profunda do operador atual.

delete

delete(ind, qubit=False)

GitHub

Retorna uma cópia com as linhas Pauli excluídas da tabela.

Ao excluir qubits, o índice do qubit é o mesmo que o índice da coluna das matrizes X e Z subjacentes.

Parâmetros

  • ind (int orlist) – índice(s) a ser(em) excluído(s).
  • qubit (bool) – se True excluir colunas de qubit, caso contrário, excluirá linhas de Pauli (Padrão: False).

Retorna

a tabela resultante com as entradas removidas.

Tipo de retorno

PauliList

Aumentos

QiskitError - se ind estiver fora dos limites do tamanho da matriz ou do número de qubits.

dot

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

GitHub

Retorna a composição other∘self para cada Pauli na lista.

Parâmetros

  • other (PauliList) – outro PauliList.
  • qargs (None or list) – qubits aos quais aplicar o produto de pontos (Padrão: None).
  • inplace (bool) – Se for True, atualize no local (padrão: False).

Retorna

a lista de Paulis compostos.

Tipo de retorno

PauliList

Aumentos

QiskitError - se outro não puder ser convertido em um PauliList, não tiver 1 ou o mesmo número de Paulis que a lista atual, ou tiver o número errado de qubits para o qargs especificado.

equiv

equiv(other)

GitHub

Comparação de entrada da equivalência de Pauli até a fase global.

Parâmetros

other (PauliList orPauli) – um objeto de comparação.

Retorna

Uma matriz de True ou False para equivalência de entrada

da tabela atual.

Tipo de retorno

np.ndarray

evolve

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

GitHub

Executa a evolução da imagem de Heisenberg (padrão) ou de Schrödinger do Pauli por um Clifford e retorna o Pauli evoluído.

A evolução da imagem de Schrödinger pode ser escolhida passando o parâmetro frame='s'. Essa opção produz um cálculo mais rápido.

A imagem de Heisenberg evolui o Pauli como P=C.P.CP^\prime = C^\dagger.P.C.

A imagem de Schrödinger evolui o Pauli como P=C.P.CP^\prime = C.P.C^\dagger.

Parâmetros

  • other (Pauli orClifford orQuantumCircuit) – O operador de Clifford para evoluir.
  • qargs (list) – uma lista de qubits aos quais aplicar o Clifford.
  • frame (string) – 'h' para Heisenberg (padrão) ou 's' para a estrutura de Schrödinger.

Retorna

o Pauli C.P.CC^\dagger.P.C (imagem de Heisenberg) ou o Pauli C.P.CC.P.C^\dagger (imagem de Schrödinger).

Tipo de retorno

PauliList

Aumentos

QiskitError - se o número Clifford de qubits e qargs não corresponder.

expand

expand(other)

GitHub

Retorna o produto de expansão de cada Pauli na lista.

Parâmetros

other (PauliList) – outro PauliList.

Retorna

a lista de produtos tensoriais de Paulis.

Tipo de retorno

PauliList

Aumentos

QiskitError - se outro não puder ser convertido em um PauliList, não tiver 1 ou o mesmo número de Paulis que a lista atual.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

Construa um PauliList a partir de um dado simétrico.

Parâmetros

  • z (np.ndarray) – 2D boolean Matriz Numpy.
  • x (np.ndarray) – 2D boolean Matriz Numpy.
  • phase (np.ndarray or None) – 1D matriz de inteiros retirada de Z_4.

Retorna

o site construído PauliList.

Tipo de retorno

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

Particionar um PauliList em conjuntos de cadeias de Pauli comutáveis.

Parâmetros

qubit_wise (bool) –

se a regra de comutação é aplicada a todo o operador ou em uma base por qubit. Por exemplo:

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

Retorna

Lista de PauliLists onde cada PauliList contém operadores Pauli comutantes.

Tipo de retorno

lista [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

Particionar um PauliList em conjuntos de cadeias de Pauli mutuamente comutáveis em termos de qubit.

Retorna

Lista de PauliLists onde cada PauliList contém operadores Pauli comutáveis.

Tipo de retorno

lista [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

Retorna uma tupla de dimensão de entrada para os subsistemas especificados.

insert

insert(ind, value, qubit=False)

GitHub

Insira Paulis na tabela.

Ao inserir qubits, o índice do qubit é o mesmo que o índice da coluna das matrizes X e Z subjacentes.

Parâmetros

  • ind (int) – índice a ser inserido.
  • value (PauliList) – valores a serem inseridos.
  • qubit (bool) – se True inserir colunas de qubit, caso contrário, inserir linhas de Pauli (Padrão: False).

Retorna

a tabela resultante com as entradas inseridas.

Tipo de retorno

PauliList

Aumentos

QiskitError - se o índice de inserção for inválido.

inverse

inverse()

GitHub

Retorna o inverso de cada Pauli na lista.

label_iter

label_iter()

GitHub

Retorna um iterador de representação de rótulos.

Esse é um iterador preguiçoso que converte cada linha em um rótulo de cadeia de caracteres somente à medida que é usado. Para converter a tabela inteira em rótulos, use o método to_labels() método.

Retorna

objeto iterador de rótulos para o site PauliList.

Tipo de retorno

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

Retorna um iterador de representação de matriz.

Esse é um iterador preguiçoso que converte cada linha na representação da matriz de Pauli somente à medida que ela é usada. Para converter a tabela inteira em matrizes, use o método to_matrix() método.

Parâmetros

sparse (bool) – opcionalmente, retorna matrizes CSR esparsas se True, caso contrário, retorna matrizes em forma de matriz Numpy (Padrão: False)

Retorna

objeto iterador de matriz para PauliList.

Tipo de retorno

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

Crie o gráfico de não comutação deste PauliList.

Isso transforma o problema de agrupamento do operador de medição em um problema de coloração de gráfico. O gráfico construído contém um nó para cada Pauli. Os nós estarão conectados para quaisquer dois termos de Pauli que não _not_ comutam.

Parâmetros

qubit_wise (bool) – se a regra de comutação é aplicada a todo o operador ou em uma base por qubit.

Retorna

o gráfico de não comutação com nós para cada Pauli e bordas

indicando uma relação de não comutação. Cada nó conterá o índice do termo de Pauli ao qual corresponde em seus dados. As bordas do gráfico não contêm dados.

Tipo de retorno

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

Retorna uma tupla de dimensão de saída para os subsistemas especificados.

power

power(n)

GitHub

Retorna a composição de um operador consigo mesmo n vezes.

Parâmetros

n (int) – o número de vezes para compor com o self ( n>0 ).

Retorna

o operador composto n vezes.

Tipo de retorno

Clifford

Aumentos

QiskitError - se as dimensões de entrada e saída do operador não forem iguais ou se a potência não for um número inteiro positivo.

reshape

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

GitHub

Retorna uma cópia superficial com dimensões reformuladas do subsistema de entrada e saída.

Parâmetros

  • input_dims (None or tuple) – novas dimensões de entrada do subsistema. Se for None (Nenhum), as dimensões de entrada originais serão preservadas [Padrão: Nenhum].
  • output_dims (None or tuple) – novas dimensões de saída do subsistema. Se for None (Nenhum), os dims de saída originais serão preservados [Padrão: Nenhum].
  • num_qubits (None or int) – remodelar para um operador N-qubit [Padrão: Nenhum].

Retorna

retorna self com dimensões de entrada e saída remodeladas.

Tipo de retorno

BaseOperator

Aumentos

QiskitError - se o tamanho combinado de todas as dimensões de entrada do subsistema ou de saída do subsistema não for constante.

sort

sort(weight=False, phase=False)

GitHub

Classifique as linhas da tabela.

O método de classificação padrão é a classificação lexicográfica por número de qubit. Ao usar o kwarg de peso, o resultado também pode ser classificado pelo número de termos não idênticos no Pauli, em que o conjunto de todos os Paulis de um determinado peso ainda é ordenado lexicograficamente.

Exemplo

Considere a ordenação aleatória de todos os 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']

Parâmetros

  • weight (bool) – opcionalmente, classificar por peso se for True (Padrão: False).
  • phase (bool) – Opcionalmente, classifique por fase antes do peso ou por ordem (Padrão: False).

Retorna

uma cópia ordenada da tabela original.

Tipo de retorno

PauliList

tensor

tensor(other)

GitHub

Retorna o produto tensorial com cada Pauli na lista.

Parâmetros

other (PauliList) – outro PauliList.

Retorna

a lista de produtos tensoriais de Paulis.

Tipo de retorno

PauliList

Aumentos

QiskitError - se outro não puder ser convertido em um PauliList, não tiver 1 ou o mesmo número de Paulis que a lista atual.

to_labels

to_labels(array=False)

GitHub

Converta um PauliList em uma lista de rótulos de cadeia de Pauli.

Para PauliLists grandes, a conversão usando o array=True kwarg será mais eficiente, pois aloca antecipadamente a memória para a matriz completa de rótulos do Numpy.

Rótulo
Simpático
Matriz
"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}

Parâmetros

array (bool) – retorna uma matriz Numpy se True, caso contrário, retorna uma lista (Padrão: False).

Retorna

As linhas do site PauliList em forma de rótulo.

Tipo de retorno

lista ou matriz

to_matrix

to_matrix(sparse=False, array=False)

GitHub

Converta em uma lista ou matriz de matrizes Pauli.

Para PauliLists grandes, a conversão usando o kwarg array=True será mais eficiente, pois aloca antecipadamente na memória uma matriz rank-3 Numpy completa de matrizes.

Rótulo
Simpático
Matriz
"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}

Parâmetros

  • sparse (bool) – se True retornar matrizes CSR esparsas, caso contrário, retornar matrizes Numpy densas (Padrão: False).
  • array (bool) – retornar como rank-3 matriz numpy se True, caso contrário, retornar uma lista de matrizes Numpy (Padrão: False).

Retorna

Uma lista de matrizes de Pauli densas se array=False e sparse=False. lista: Uma lista de matrizes de Pauli esparsas se array=False e sparse=True. matriz: Uma matriz densa de matrizes de Pauli de dimensão rank-3, se array=True.

Tipo de retorno

Lista

transpose

transpose()

GitHub

Retorna a transposição de cada Pauli na lista.

unique

unique(return_index=False, return_counts=False)

GitHub

Devolver a Paulis exclusiva da mesa.

Exemplo

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

Parâmetros

  • return_index (bool) – Se for o caso True, retorne também os índices que resultam na matriz única. (Padrão: False)
  • return_counts (bool) – Se True, retorne também o número de vezes que cada item exclusivo aparece na tabela.

Retorna

exclusivo

a tabela das linhas exclusivas.

unique_indices: np.ndarray, opcional

Os índices das primeiras ocorrências dos valores exclusivos na matriz original. Fornecido somente se return_index for True.

unique_counts: np.array, opcional

O número de vezes que cada um dos valores exclusivos aparece na matriz original. Fornecido somente se return_counts for True.

Tipo de retorno

PauliList

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.