Takes the partial trace of a given tensor.
cirq.linalg.partial_trace(
tensor: np.ndarray,
keep_indices: List[int]
) -> np.ndarray
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 j
th element of keep_indices
.
Args |
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).
|
Raises |
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.
|