BitArray
class qiskit.primitives.BitArray(array, num_bits)
Bases: ShapedMixin
Almacena una matriz de valores de bits.
Este objeto contiene un único bloque contiguo de datos que representa una matriz de cadenas de bits. El último eje es sobre bits empaquetados, el penúltimo eje es sobre disparos, y los ejes precedentes corresponden a la forma del pub que se ejecutó para muestrear estos bits.
Normalmente, este objeto se devuelve como parte de un conjunto DataBin al que se accede a través de un único elemento PubResult.data. Por lo general, los usuarios no crean esta clase por sí mismos; sin embargo, si tienes datos similares a una cadena de bits en un formato alternativo y deseas convertirlos a una BitArray, puedes utilizar una de las siguientes opciones from_bool_array():, from_counts() o from_samples().
Puede «descomprimir» las cadenas de bits en una matriz bool expandida utilizando el to_bool_array() método.
Esta clase admite los operadores bit a bit & (and), | (or), ^ (xor) y ~ (not), donde los operadores binarios actúan sobre dos BitArray instancias.
La clase también admite la sintaxis de bit_array[indices]«indexación». Seleccionan indices una sola entrada o una sección multidimensional de entradas, de la misma forma que el pub correspondiente. Los índices permitidos coinciden numpy.ndarray: puede utilizar números enteros únicos, segmentos (a:b) o matrices Numpy para cada dimensión, y utilizar una tupla de elementos para segmentar varias dimensiones a la vez. La sintaxis de indexación no se puede utilizar para dividir a lo largo de los ejes «shots» o «bits»; para ello, utilice slice_shots() y slice_bits(), respectivamente.
Parámetros
- array (NDArray[np.uint8]) – La matriz de datos
uint8. - num_bits (int) – ¿Cuántos bits tiene cada resultado?
Eleva
- TypeError - Si la entrada no es una matriz NumPy de tipo
numpy.uint8. - ValueError - Si la matriz de entrada tiene menos de dos ejes, o el tamaño del último eje no es el menor número de bytes que puede contener
num_bits.
Atributos
array
La matriz de datos NumPy.
ndim
num_bits
El número de bits del registro para el que esta matriz almacena datos.
Por ejemplo, un ClassicalRegister(5, "meas") daría como resultado num_bits=5.
num_shots
El número de disparos muestreados del registro en cada configuración.
Más concretamente, la longitud del penúltimo eje de array.
shape
size
Métodos
bitcount
bitcount()
Calcula el número de unos que aparecen en la representación binaria de cada disparo.
Devuelve
Un numpy.uint64-array con forma (*shape, num_shots).
Tipo de retorno
ndarray [ tupla [ Cualquier tipo, …], d[* type*] uint64]
concatenate
static concatenate(bit_arrays, axis=0)
Une una secuencia de matrices de bits a lo largo de un eje existente.
Parámetros
- bit_arrays (Sequence[BitArray]) – Las matrices de bits deben tener (1) el mismo número de bits, (2) el mismo número de disparos y (3) la misma forma, salvo en la dimensión correspondiente al eje (el primero, por defecto).
- axis (int) – El eje a lo largo del cual se unirán las matrices. El valor predeterminado es 0.
Devuelve
La matriz de bits concatenada.
Eleva
- ValueError - Si la secuencia de matrices de bits está vacía.
- ValueError - Si alguna matriz de bits tiene un número diferente de bits.
- ValueError - Si alguna matriz de bits tiene un número diferente de disparos.
- ValueError - Si alguna matriz de bits tiene un número diferente de dimensiones.
Tipo de retorno
concatenate_bits
static concatenate_bits(bit_arrays)
Une una secuencia de matrices de bits a lo largo del eje de bits.
Este método es equivalente a la concatenación de cadenas de bits por disparo.
Parámetros
bit_arrays (Sequence[BitArray]) – Matrices de bits que tienen (1) el mismo número de puntos y (2) la misma forma.
Devuelve
La matriz de bits apilados.
Eleva
- ValueError - Si la secuencia de matrices de bits está vacía.
- ValueError - Si alguna matriz de bits tiene un número diferente de disparos.
- ValueError - Si alguna matriz de bits tiene una forma diferente.
Tipo de retorno
concatenate_shots
static concatenate_shots(bit_arrays)
Une una secuencia de matrices de bits a lo largo del eje de disparos.
Parámetros
bit_arrays (Sequence[BitArray]) – Las matrices de bits deben tener (1) el mismo número de bits y (2) la misma estructura.
Devuelve
La matriz de bits apilados.
Eleva
- ValueError - Si la secuencia de matrices de bits está vacía.
- ValueError - Si alguna matriz de bits tiene un número diferente de bits.
- ValueError - Si alguna matriz de bits tiene una forma diferente.
Tipo de retorno
expectation_values
expectation_values(observables)
Calcula los valores de expectativa de los observables proporcionados, emitidos contra esta matriz de bits.
Este método devuelve la parte real del valor de la expectativa incluso si el operador tiene coeficientes complejos debido a la especificación de sampled_expectation_value().
Parámetros
observables (str |Pauli |SparsePauliOp |SparseObservable |Mapping[str |Pauli, float] | ArrayLike) – Las variables observables de las que se va a calcular el valor esperado. Debe tener una forma que pueda transmitirse mediante esta matriz de bits y el mismo número de qubits que el número de bits de dicha matriz. Las observables también deben ser diagonales (I, Z, 0 o 1).
Devuelve
Una matriz de valores de expectativa cuya forma es la forma de emisión de observables y esta matriz de bits.
Eleva
- ValueError - Si los observables proporcionados no tienen una forma transmisible con esta matriz de bits.
- ValueError - Si los observables proporcionados no tienen el mismo número de qubits que el número de bits de esta matriz de bits.
- ValueError - Si los observables proporcionados no son diagonales.
Tipo de retorno
ndarray [ tupla [ Cualquier tipo, …], d[* type float64*] ]
from_bool_array
static from_bool_array(array, order='big')
Construye una nueva matriz de bits a partir de una matriz de bools.
Parámetros
- array (ndarray[tuple[Any, ...], dtype[bool]]) – La matriz que se va a convertir, con «cadenas de bits» en el último eje.
- order (Literal['big', 'little']) – Uno de
"big"o"little", que indica siarray[..., 0]corresponden a los bits más significativos o a los bits menos significativos de cada cadena de bits, respectivamente.
Devuelve
Una nueva matriz de bits.
Tipo de retorno
from_counts
static from_counts(counts, num_bits=None)
Construye una nueva matriz de bits a partir de uno o más objetos similares a Counts.
counts puede tener claves (uniformemente) enteras, hexadecimales o de bits. Sus valores representan el número de ocurrencias de ese valor.
Parámetros
- counts (Mapping[str |int, int] | Iterable[Mapping[str |int, int]]) – Una o varias asignaciones de tipo «counts» con el mismo número de disparos.
- num_bits (int | None) – El número deseado de bits por disparo. Si no se establece, el mayor valor encontrado establece este valor, con un mínimo de un bit.
Devuelve
Una nueva matriz de bits con la forma () para recuentos de entrada única, o (N,) para una iterable de recuentos.
Eleva
- ValueError - Si diferentes mapeos tienen diferentes números de disparos.
- ValueError - Si no se suministran diccionarios de recuento.
Tipo de retorno
from_samples
static from_samples(samples, num_bits=None)
Construye una nueva matriz de bits a partir de un iterable de cadenas de bits, cadenas hexadecimales o enteros.
Se supone que todas las muestras son enteras si la primera lo es. Las cadenas se consideran cadenas de bits siempre que la primera cadena no empiece por "0x".
Considere emparejar este método con reshape() si sus muestras representan datos anidados.
Parámetros
- samples (Iterable[str] | Iterable[int]) – Una lista de cadenas de bits, una lista de números enteros o una lista de cadenas hexadecimales.
- num_bits (int | None) – El número deseado de bits por muestra. Si no se establece, se utiliza la muestra más grande proporcionada para determinar este valor, con un mínimo de un bit.
Devuelve
Una nueva matriz de bits.
Eleva
ValueError - Si no se indican cadenas.
Tipo de retorno
get_bitstrings
get_bitstrings(loc=None)
Devuelve una lista de cadenas de bits.
Parámetros
loc (int |tuple[int, ...] | None) – Para qué entrada de este array devolver un diccionario. Si None, los recuentos de todas las posiciones de esta matriz se unen.
Devuelve
Una lista de cadenas de bits.
Tipo de retorno
get_counts
get_counts(loc=None)
Devuelve un diccionario de conteos con claves bitstring.
Parámetros
loc (int |tuple[int, ...] | None) – Para qué entrada de este array devolver un diccionario. Si None, los recuentos de todas las posiciones de esta matriz se unen.
Devuelve
Un diccionario que asigna cadenas de bits al número de ocurrencias de esa cadena de bits.
Tipo de retorno
get_int_counts
get_int_counts(loc=None)
Devuelve un diccionario de cuentas, donde las cadenas de bits se almacenan como ints.
Parámetros
loc (int |tuple[int, ...] | None) – Para qué entrada de este array devolver un diccionario. Si None, los recuentos de todas las posiciones de esta matriz se unen.
Devuelve
Un diccionario que asigna ints al número de apariciones de ese int.
Tipo de retorno
postselect
postselect(indices, selection)
Post-selecciona esta matriz de bits basándose en la igualdad rebanada con una cadena de bits dada.
Si esta matriz de bits contiene algún eje de forma, primero se aplana en una larga lista de tomas antes de aplicar la postselección. Esto se hace porque BitArray no puede manejar números irregulares de disparos a través de los ejes.
Parámetros
- indices (Sequence[int] | int) – Una lista de los índices de los cbits sobre los que realizar la preselección. Si esta matriz de bits ha sido generada por un muestreador, entonces cada índice
icorresponde a unaClassicalRegisterposicióncreg[i](como enslice_bits()). Se permiten los índices negativos. - selection (Sequence[bool |int] | bool |int) – Una lista de valores binarios (que se convertirán a
bool) de longitud igual aindices, dondeindices[i]corresponde aselection[i]. Los disparos se descartarán a menos que todos los cbits especificados porindicestengan los valores indicados porselection.
Devuelve
Una nueva matriz de bits con shape=(), num_bits=data.num_bits, num_shots<=data.num_shots.
Eleva
- IndexError - Si
max(indices)es mayor o igual quenum_bits. - IndexError - Si
min(indices)es inferior a negativonum_bits. - ValueError - Si las longitudes de
selectionyindicesno coinciden.
Tipo de retorno
reshape
reshape(*shape)
Devuelve una nueva matriz de bits remodelada.
El eje num_shots se incluye o excluye del procedimiento de remodelación en función de la imagen con la que sea compatible la nueva forma. Por ejemplo, para una matriz de bits con forma (20, 5) y disparos 64 , una remodelación a (100,) dejaría intacto el número de disparos, mientras que una remodelación a (200, 32) cambiaría el número de disparos a 32.
Parámetros
*shape ( int | Iterable* [ *int | [I] terableShapeInput] ) – La nueva forma deseada.
Devuelve
Una nueva matriz de bits.
Eleva
ValueError - Si el tamaño correspondiente a su nueva forma no es igual a sizeo el producto de size y num_shots.
Tipo de retorno
slice_bits
slice_bits(indices)
Devuelve una matriz de bits cortada a lo largo del eje de bits de algunos índices de interés.
La convención utilizada por este método es que el índice 0 corresponde al bit menos significativo de la cadena de bits arrayo, lo que es lo mismo, la entrada más a la derecha de la cadena de bits devuelta por get_counts() o get_bitstrings()etc.
Si esta matriz de bits fue producida por un muestreador, entonces un índice i corresponde a la ClassicalRegister ubicación creg[i].
Parámetros
indices (int |Sequence[int]) – Las posiciones de los bits por las que se desea dividir.
Devuelve
Una matriz de bits cortada a lo largo del eje de bits.
Eleva
IndexError - Si hay algún índice no válido del eje de bits.
Tipo de retorno
slice_shots
slice_shots(indices)
Devuelve una matriz de bits cortada a lo largo del eje de tomas de algunos índices de interés.
Parámetros
indices (int |Sequence[int]) – Las posiciones de tiro que nos interesan para realizar un slice.
Devuelve
Un poco de matriz rebanada a lo largo del eje de disparos.
Eleva
IndexError - Si hay algún índice no válido del eje de las tomas.
Tipo de retorno
to_bool_array
to_bool_array(order='big')
Convierte esto BitArray en una matriz booleana.
Parámetros
order (Literal['big', 'little']) – Una de "big" o "little", respectivamente, que indica si el bit más significativo o el bit menos significativo de cada cadena de bits debe colocarse en [..., 0].
Devuelve
Una matriz de bools NumPy.
Eleva
ValueError - Si la orden no es una de "big" o "little".
Tipo de retorno
ndarray [ tupla [ Cualquier tipo, …], dtype [ bool ]]
transpose
transpose(*axes)
Devuelve una matriz de bits con los ejes transpuestos.
Parámetros
ejes - Ninguno, tupla de ints o n ints. Consulte ndarray.transpose para más detalles.
Devuelve
Una matriz de bits con los ejes permutados.
Tipo de retorno
Eleva
- ValueError - Si
axesno coincide con esta matriz de bits. - ValueError - Si
axesincluye índices que están fuera de los límites.