Source code for qlearnkit.encodings.basis_encoding

from .encoding_map import EncodingMap
from qiskit import QuantumCircuit
import numpy as np


[docs]class BasisEncoding(EncodingMap):
[docs] def circuit(self, x: np.ndarray) -> QuantumCircuit: """ Retrieves the quantum circuit encoding via Basis Encoding Args: x: the data vector to encode Returns: the quantum encoding circuit Note: All data values must be either 1s or 0s """ if isinstance(x, list): x = np.array(x) if np.count_nonzero(x == 0) + np.count_nonzero(x == 1) != len(x): raise ValueError("All features must be either 0 or 1 for Basis Encoding") x = np.array(x) x_reversed = x[::-1] # match Qiskit qubit ordering n_qubits = self.n_qubits(x) qc = QuantumCircuit(n_qubits) one_indices = np.where(x_reversed == 1)[0] for i in one_indices: qc.x(i) return qc
[docs] def n_qubits(self, x): return len(x)
[docs] def state_vector(self, x): return ''.join(str(s) for s in x)