Skip to main content
IBM Quantum Platform

BitArray

class qiskit.primitives.BitArray(array, num_bits)

GitHub

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()

GitHub

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)

GitHub

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

BitArray

concatenate_bits

static concatenate_bits(bit_arrays)

GitHub

Joindre une séquence de tableaux de bits le long de l'axe des bits.

Remarque

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

BitArray

concatenate_shots

static concatenate_shots(bit_arrays)

GitHub

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

BitArray

expectation_values

expectation_values(observables)

GitHub

Calculer les valeurs attendues des observables fournis, diffusés par rapport à ce tableau de bits.

Remarque

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

GitHub

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 si array[..., 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

BitArray

from_counts

static from_counts(counts, num_bits=None)

GitHub

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 NN.

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

BitArray

from_samples

static from_samples(samples, num_bits=None)

GitHub

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

BitArray

get_bitstrings

get_bitstrings(loc=None)

GitHub

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

liste[ str ]

get_counts

get_counts(loc=None)

GitHub

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

dict[ str, int ]

get_int_counts

get_int_counts(loc=None)

GitHub

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

dict[ int, int ]

postselect

postselect(indices, selection)

GitHub

Post-sélectionner ce tableau de bits sur la base de l'égalité tranchée avec une chaîne de bits donnée.

Remarque

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 i correspond à l'emplacement creg[i]ClassicalRegister (comme dans slice_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 par indices aient les valeurs indiquées par selection.

Retours

Un nouveau tableau de bits avec shape=(), num_bits=data.num_bits, num_shots<=data.num_shots.

Augmentations

Type de retour

BitArray

reshape

reshape(*shape)

GitHub

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

BitArray

slice_bits

slice_bits(indices)

GitHub

Renvoie un tableau de bits découpé le long de l'axe des bits de certains indices d'intérêt.

Remarque

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

BitArray

slice_shots

slice_shots(indices)

GitHub

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

BitArray

to_bool_array

to_bool_array(order='big')

GitHub

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)

GitHub

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

BitArray

Augmentations

  • ValueError - Si axes ne correspond pas à ce tableau de bits.
  • ValueError - Si axes comprend des indices hors limites.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.