diag¶
- paddle. diag ( x, offset=0, padding_value=0, name=None ) [source]
-
If
x
is a vector (1-D tensor), a 2-D square tensor with the elements ofx
as the diagonal is returned.If
x
is a matrix (2-D tensor), a 1-D tensor with the diagonal elements ofx
is returned.The argument
offset
controls the diagonal offset:If
offset
= 0, it is the main diagonal.If
offset
> 0, it is superdiagonal.If
offset
< 0, it is subdiagonal.- Parameters
-
x (Tensor) – The input tensor. Its shape is either 1-D or 2-D. Its data type should be float32, float64, int32, int64.
offset (int, optional) – The diagonal offset. A positive value represents superdiagonal, 0 represents the main diagonal, and a negative value represents subdiagonal.
padding_value (int|float, optional) – Use this value to fill the area outside the specified diagonal band. Only takes effect when the input is a 1-D Tensor. The default value is 0.
name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.
- Returns
-
Tensor, a square matrix or a vector. The output data type is the same as input data type.
Examples
import paddle paddle.disable_static() x = paddle.to_tensor([1, 2, 3]) y = paddle.diag(x) print(y.numpy()) # [[1 0 0] # [0 2 0] # [0 0 3]] y = paddle.diag(x, offset=1) print(y.numpy()) # [[0 1 0 0] # [0 0 2 0] # [0 0 0 3] # [0 0 0 0]] y = paddle.diag(x, padding_value=6) print(y.numpy()) # [[1 6 6] # [6 2 6] # [6 6 3]]
import paddle paddle.disable_static() x = paddle.to_tensor([[1, 2, 3], [4, 5, 6]]) y = paddle.diag(x) print(y.numpy()) # [1 5] y = paddle.diag(x, offset=1) print(y.numpy()) # [2 6] y = paddle.diag(x, offset=-1) print(y.numpy()) # [4]