cirq.partial_trace(tensor: numpy.ndarray, keep_indices: List[int]) → numpy.ndarray[source]

Takes the partial trace of a given tensor.

The input tensor must have shape (d_0, ..., d_{k-1}, d_0, ..., d_{k-1}).
The trace is done over all indices that are not in keep_indices. The
resulting tensor has shape (d_{i_0}, ..., d_{i_r}, d_{i_0}, ..., d_{i_r})
where i_j is the jth element of keep_indices.
  • tensor – The tensor to sum over. This tensor must have a shape (d_0, …, d_{k-1}, d_0, …, d_{k-1}).

  • keep_indices – Which indices to not sum over. These are only the indices of the first half of the tensors indices (i.e. all elements must be between 0 and tensor.ndims / 2 - 1 inclusive).


ValueError – if the tensor is not of the correct shape or the indices are not from the first half of valid indices for the tensor.