BitArray
class qiskit.primitives.BitArray(array, num_bits)
Bases : ShapedMixin
Stocke un tableau de valeurs de bits.
Cet objet contient un seul bloc de données contiguës représentant un tableau de chaînes de bits. Le dernier axe porte sur les bits emballés, l'avant-dernier axe sur les tirs, et les axes précédents correspondent à la forme de la pub qui a été exécutée pour échantillonner ces bits.
En général, cet objet vous est renvoyé en tant que partie intégrante d'un élément DataBin accessible via un seul PubResult.data. En général, les utilisateurs ne créent pas eux-mêmes cette classe; toutefois, si vous disposez de données de type « bitstring » sous une autre forme et que vous souhaitez les convertir en BitArray, vous pouvez utiliser l'une des options from_bool_array()suivantes :, from_counts() ou from_samples().
Vous pouvez « décompresser » les chaînes de bits dans un tableau étendu de bool à l'aide de la to_bool_array() méthode.
Cette classe prend en charge les opérateurs bit à bit & (et), | (ou), ^ (xor) et ~ (non), où les opérateurs binaires agissent sur deux BitArray instances.
La classe prend également en charge la syntaxe « bit_array[indices]indexation ». Ces derniers indices sélectionnent une seule entrée ou une tranche multidimensionnelle d'entrées, de même forme que le pub correspondant. Les indices autorisés correspondent numpy.ndarray: vous pouvez utiliser des entiers simples, des tranches (a:b) ou des tableaux Numpy pour chaque dimension, et utiliser un tuple d'éléments pour découper plusieurs dimensions à la fois. La syntaxe d'indexation ne peut pas être utilisée pour découper selon les axes « shots » ou « bits »; pour cela, utilisez respectivement slice_shots() et slice_bits().
Paramètres
- array (NDArray[np.uint8]) – Le tableau de données
uint8. - num_bits (int) – Combien de bits comporte chaque résultat?
Augmentations
- TypeError - Si l'entrée n'est pas un tableau NumPy de type
numpy.uint8. - ValueError - Si le tableau d'entrée a moins de deux axes, ou si la taille du dernier axe n'est pas le plus petit nombre d'octets pouvant contenir
num_bits.
Attributs
array
Le tableau de données brutes NumPy.
ndim
num_bits
Nombre de bits dans le registre pour lequel ce tableau stocke des données.
Par exemple, un ClassicalRegister(5, "meas") donnerait num_bits=5.
num_shots
Le nombre de tirs échantillonnés à partir du registre dans chaque configuration.
Plus précisément, la longueur de l'avant-dernier axe de array.
shape
size
Méthodes
bitcount
bitcount()
Calculer le nombre de uns apparaissant dans la représentation binaire de chaque cliché.
Retours
Un tableau numpy.uint64 de forme (*shape, num_shots).
Type de retour
NDArray [ uint64 ]
concatenate
static concatenate(bit_arrays, axis=0)
Joindre une séquence de tableaux de bits le long d'un axe existant.
Paramètres
- bit_arrays (Sequence[BitArray]) – Les tableaux de bits doivent avoir (1) le même nombre de bits, (2) le même nombre d'échantillons et (3) la même forme, sauf pour la dimension correspondant à l'axe (le premier, par défaut).
- axis (int) – L'axe le long duquel les tableaux seront joints. La valeur par défaut est 0.
Retours
Le tableau de bits concaténés.
Augmentations
- ValueError - Si la séquence de tableaux de bits est vide.
- ValueError - Si l'un des tableaux de bits a un nombre de bits différent.
- ValueError - Si l'un des tableaux de bits a un nombre différent de tirs.
- ValueError - Si l'un des tableaux de bits a un nombre différent de dimensions.
Type de retour
concatenate_bits
static concatenate_bits(bit_arrays)
Joindre une séquence de tableaux de bits le long de l'axe des bits.
Cette méthode est équivalente à la concaténation de chaînes de bits par tir.
Paramètres
bit_arrays (Sequence[BitArray]) – Des tableaux de bits qui ont (1) le même nombre d'éléments et (2) la même forme.
Retours
Le tableau de bits empilés.
Augmentations
- ValueError - Si la séquence de tableaux de bits est vide.
- ValueError - Si l'un des tableaux de bits a un nombre différent de tirs.
- ValueError - Si l'un des tableaux de bits a une forme différente.
Type de retour
concatenate_shots
static concatenate_shots(bit_arrays)
Joindre une séquence de tableaux de bits le long de l'axe des plans.
Paramètres
bit_arrays (Sequence[BitArray]) – Les tableaux de bits doivent (1) avoir le même nombre de bits et (2) la même structure.
Retours
Le tableau de bits empilés.
Augmentations
- ValueError - Si la séquence de tableaux de bits est vide.
- ValueError - Si l'un des tableaux de bits a un nombre de bits différent.
- ValueError - Si l'un des tableaux de bits a une forme différente.
Type de retour
expectation_values
expectation_values(observables)
Calculer les valeurs attendues des observables fournis, diffusés par rapport à ce tableau de bits.
Cette méthode renvoie la partie réelle de la valeur attendue, même si l'opérateur possède des coefficients complexes, en raison de la spécification de sampled_expectation_value().
Paramètres
observables (str |Pauli |SparsePauliOp |SparseObservable |Mapping[str |Pauli, float] | ArrayLike) – La ou les grandeurs observables dont on calcule la valeur attendue. La forme doit pouvoir être transmise à l'aide de ce tableau de bits et comporter le même nombre de qubits que le nombre de bits de ce tableau. Les observables doivent également être diagonales (I, Z, 0 ou 1).
Retours
Un tableau de valeurs d'espérance dont la forme correspond à la forme de diffusion de observables et de ce tableau de bits.
Augmentations
- ValueError - Si les observables fournis n'ont pas de forme diffusable avec ce tableau de bits.
- ValueError - Si les observables fournies n'ont pas le même nombre de qubits que le nombre de bits de ce tableau de bits.
- ValueError - Si les observables fournis ne sont pas diagonaux.
Type de retour
NDArray [ float64 ]
from_bool_array
static from_bool_array(array, order='big')
Construit un nouveau tableau de bits à partir d'un tableau de bools.
Paramètres
- array (NDArray[bool]) – Le tableau à convertir, avec des « chaînes de bits » sur le dernier axe.
- order (Literal['big', 'little']) – L'un des deux
"big"ou"little", indiquant siarray[..., 0]correspond aux bits les plus significatifs ou aux bits les moins significatifs de chaque chaîne de bits, respectivement.
Retours
Un nouveau tableau de bits.
Type de retour
from_counts
static from_counts(counts, num_bits=None)
Construit un nouveau tableau de bits à partir d'un ou plusieurs objets de type Counts.
Le site counts peut avoir des clés qui sont (uniformément) des entiers, des chaînes hexagonales ou des chaînes de bits. Leurs valeurs représentent le nombre d'occurrences de cette valeur.
Paramètres
- counts (Mapping[str |int, int] | Iterable[Mapping[str |int, int]]) – Une ou plusieurs correspondances de type « counts » comportant le même nombre d'éléments.
- num_bits (int | None) – Le nombre souhaité de bits par tir. Si elle n'est pas définie, la plus grande valeur trouvée définit cette valeur, avec un minimum d'un bit.
Retours
Un nouveau tableau de bits ayant la forme () pour les comptages à entrée unique, ou (N,) pour un itérable de comptages .
Augmentations
- ValueError - Si des mappings différents ont des nombres de tirs différents.
- ValueError - Si aucun dictionnaire de comptage n'est fourni.
Type de retour
from_samples
static from_samples(samples, num_bits=None)
Construit un nouveau tableau de bits à partir d'une table itérative de chaînes de bits, de chaînes d'hexagones ou d'entiers.
Tous les échantillons sont supposés être des entiers si le premier l'est. Les chaînes sont toutes supposées être des chaînes de bits lorsque la première chaîne ne commence pas par "0x".
Envisagez de coupler cette méthode avec reshape() si vos échantillons représentent des données imbriquées.
Paramètres
- samples (Iterable[str] | Iterable[int]) – Une liste de chaînes binaires, une liste d'entiers ou une liste de chaînes hexadécimales.
- num_bits (int | None) – Le nombre souhaité de bits par échantillon. Si cette option n'est pas activée, le plus grand échantillon fourni est utilisé pour déterminer cette valeur, avec un minimum d'un bit.
Retours
Un nouveau tableau de bits.
Augmentations
ValueError - Si aucune chaîne n'est donnée.
Type de retour
get_bitstrings
get_bitstrings(loc=None)
Renvoie une liste de chaînes de bits.
Paramètres
loc (int |tuple[int, ...] | None) – L'entrée de ce tableau pour laquelle il faut renvoyer un dictionnaire. Si None, les effectifs de toutes les positions de ce tableau sont regroupés.
Retours
Une liste de chaînes de bits.
Type de retour
get_counts
get_counts(loc=None)
Renvoie un dictionnaire de comptes dont les clés sont des chaînes de bits.
Paramètres
loc (int |tuple[int, ...] | None) – L'entrée de ce tableau pour laquelle il faut renvoyer un dictionnaire. Si None, les effectifs de toutes les positions de ce tableau sont regroupés.
Retours
Un dictionnaire associant des chaînes de bits au nombre d'occurrences de ces chaînes.
Type de retour
get_int_counts
get_int_counts(loc=None)
Renvoie un dictionnaire de comptes, dans lequel les chaînes de bits sont stockées sous la forme de ints.
Paramètres
loc (int |tuple[int, ...] | None) – L'entrée de ce tableau pour laquelle il faut renvoyer un dictionnaire. Si None, les effectifs de toutes les positions de ce tableau sont regroupés.
Retours
Un dictionnaire associant ints au nombre d'occurrences de ce int.
Type de retour
postselect
postselect(indices, selection)
Post-sélectionner ce tableau de bits sur la base de l'égalité tranchée avec une chaîne de bits donnée.
Si ce tableau de bits contient des axes de forme, il est d'abord aplati en une longue liste de plans avant d'appliquer la post-sélection. Cela est dû au fait que BitArray ne peut pas gérer des nombres irréguliers de tirs sur les axes.
Paramètres
- indices (Sequence[int] | int) – Une liste des indices des cbits sur lesquels effectuer une présélection. Si ce tableau de bits a été généré par un échantillonneur, alors un indice
icorrespond à l'emplacementcreg[i]ClassicalRegister(comme dansslice_bits()). Les indices négatifs sont autorisés. - selection (Sequence[bool |int] | bool |int) – Une liste de valeurs binaires (qui seront converties en
bool) d'une longueur correspondant àindices, oùindices[i]correspond àselection[i]. Les échantillons seront écartés à moins que tous les cbits spécifiés parindicesaient les valeurs indiquées parselection.
Retours
Un nouveau tableau de bits avec shape=(), num_bits=data.num_bits, num_shots<=data.num_shots.
Augmentations
- IndexError - Si
max(indices)est supérieur ou égal ànum_bits. - IndexError - Si
min(indices)est inférieur à la valeur négativenum_bits. - ValueError - Si les longueurs de
selectionetindicesne correspondent pas.
Type de retour
reshape
reshape(*shape)
Renvoie un nouveau tableau de bits remodelé.
L'axe num_shots est inclus ou exclu de la procédure de remodelage en fonction de l'image avec laquelle la nouvelle forme est compatible. Par exemple, pour un tableau de bits ayant la forme (20, 5) et les tirs 64 , un remodelage en (100,) laisserait le nombre de tirs intact, tandis qu'un remodelage en (200, 32) changerait le nombre de tirs en 32.
Paramètres
*shape ( int | Iterable* [ *int | [I] terableShapeInput] ) – La nouvelle forme souhaitée.
Retours
Un nouveau tableau de bits.
Augmentations
ValueError - Si la taille correspondant à votre nouvelle forme n'est pas égale à sizesoit au produit de size et num_shots.
Type de retour
slice_bits
slice_bits(indices)
Renvoie un tableau de bits découpé le long de l'axe des bits de certains indices d'intérêt.
La convention utilisée par cette méthode est que l'index 0 correspond au bit le moins significatif de l'entrée de la chaîne de bits la plus à droite, telle qu'elle a été renvoyée arrayou, de manière équivalente, à l'entrée de la chaîne de bits la plus à droite, telle qu'elle est renvoyée par get_counts() ou get_bitstrings(), etc.
Si ce tableau de bits a été généré par un échantillonneur, alors un indice i correspond à l'emplacement ClassicalRegister creg[i].
Paramètres
indices (int |Sequence[int]) – Les positions binaires à prendre en compte pour effectuer la découpage.
Retours
Un tableau de bits découpé le long de l'axe des bits.
Augmentations
IndexError - En cas d'indices non valides de l'axe des bits.
Type de retour
slice_shots
slice_shots(indices)
Renvoie un tableau de bits découpé le long de l'axe des plans de certains indices d'intérêt.
Paramètres
indices (int |Sequence[int]) – Les positions de tir à privilégier pour réaliser un slice.
Retours
Un tableau de bits tranché le long de l'axe des plans.
Augmentations
IndexError - S'il existe des indices non valides pour l'axe des plans.
Type de retour
to_bool_array
to_bool_array(order='big')
Convertir ce BitArray en un tableau de booléens.
Paramètres
order (Literal['big', 'little']) – L'un de "big" ou "little", indiquant respectivement si le bit le plus significatif ou le bit le moins significatif de chaque chaîne de bits doit être placé à [..., 0].
Retours
Un tableau de bools NumPy.
Augmentations
ValueError - Si l'ordre n'est pas l'un des suivants : "big" ou "little".
Type de retour
NDArray [ bool ]
transpose
transpose(*axes)
Renvoie un tableau de bits avec les axes transposés.
Paramètres
axes - Aucun, tuple d'ints ou n ints. Voir ndarray.transpose pour plus de détails.
Retours
Un tableau de bits dont les axes sont permutés.
Type de retour
Augmentations
- ValueError - Si
axesne correspond pas à ce tableau de bits. - ValueError - Si
axescomprend des indices hors limites.