Source code for toqito.states.basis

"""Basis state."""
import numpy as np


[docs] def basis(dim: int, pos: int) -> np.ndarray: r""" Obtain the ket of dimension :code:`dim` [WikKet]_. Examples ========== The standard basis bra vectors given as :math:`|0 \rangle` and :math:`|1 \rangle` where .. math:: |0 \rangle = \left[1, 0 \right]^{\text{T}} \quad \text{and} \quad |1 \rangle = \left[0, 1 \right]^{\text{T}}, can be obtained in :code:`toqito` as follows. Example: Ket basis vector: :math:`|0\rangle`. >>> from toqito.states import basis >>> basis(2, 0) [[1] [0]] Example: Ket basis vector: :math:`|1\rangle`. >>> from toqito.states import basis >>> basis(2, 1) [[0] [1]] References ========== .. [WikKet] Wikipedia page for bra–ket notation: https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation :raises ValueError: If the input position is not in the range [0, dim - 1]. :param dim: The dimension of the column vector. :param pos: The position in which to place a 1. :return: The column vector of dimension :code:`dim` with all entries set to `0` except the entry at position `1`. """ if pos >= dim: raise ValueError( "Invalid: The `pos` variable needs to be less than `dim` for ket function." ) ret = np.array(list(map(int, list(f"{0:0{dim}}")))) ret[pos] = 1 ret = ret.conj().T.reshape(-1, 1) return ret