cirq.sample_density_matrix(density_matrix: numpy.ndarray, indices: List[int], *, qid_shape: Optional[Tuple[int, …]] = None, repetitions: int = 1, seed: cirq.RANDOM_STATE_OR_SEED_LIKE = None) → numpy.ndarray[source]

Samples repeatedly from measurements in the computational basis.

Note that this does not modify the density_matrix.

  • density_matrix – The density matrix to be measured. This matrix is assumed to be positive semidefinite and trace one. The matrix is assumed to be of shape (2 ** integer, 2 ** integer) or (2, 2, …, 2).

  • indices – Which qubits are measured. The density matrix rows and columns are assumed to be supplied in big endian order. That is the xth index of v, when expressed as a bitstring, has its largest values in the 0th index.

  • qid_shape – The qid shape of the density matrix. Specify this argument when using qudits.

  • repetitions – The number of times to sample the density matrix.

  • seed – A seed for the pseudorandom number generator.


Measurement results with True corresponding to the |1⟩ state. The outer list is for repetitions, and the inner corresponds to measurements ordered by the supplied qubits. These lists are wrapped as an numpy ndarray.

  • ValueErrorrepetitions is less than one or size of matrix is not a power of 2.

  • IndexError – An index from indices is out of range, given the number of qubits corresponding to the density matrix.