diag

paddle.diag ( x, offset=0, padding_value=0, name=None ) [源代码]

如果 x 是向量(1-D张量),则返回带有 x 元素作为对角线的2-D方阵。

如果 x 是矩阵(2-D张量),则提取 x 的对角线元素,以1-D张量返回。

参数 offset 控制对角线偏移量:

  • 如果 offset = 0,则为主对角线。

  • 如果 offset > 0,则为上对角线。

  • 如果 offset < 0,则为下对角线。

参数

  • x(Tensor):输入的 Tensor。它的形状可以是一维或二维。其数据类型应为float32,float64,int32,int64。

  • offset(int,可选):对角线偏移量。正值表示上对角线,0表示主对角线,负值表示下对角线。

  • padding_value(int|float,可选):使用此值来填充指定对角线以外的区域。仅在输入为一维张量时生效。默认值为0。

  • name (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 Name

返回

Tensor,方阵或向量。输出数据类型与输入数据类型相同。

代码示例 1

  1. import paddle
  2. x = paddle.to_tensor([1, 2, 3])
  3. y = paddle.diag(x)
  4. print(y)
  5. # [[1 0 0]
  6. # [0 2 0]
  7. # [0 0 3]]
  8. y = paddle.diag(x, offset=1)
  9. print(y)
  10. # [[0 1 0 0]
  11. # [0 0 2 0]
  12. # [0 0 0 3]
  13. # [0 0 0 0]]
  14. y = paddle.diag(x, padding_value=6)
  15. print(y)
  16. # [[1 6 6]
  17. # [6 2 6]
  18. # [6 6 3]]

代码示例 2

  1. import paddle
  2. x = paddle.to_tensor([[1, 2, 3], [4, 5, 6]])
  3. y = paddle.diag(x)
  4. print(y)
  5. # [1 5]
  6. y = paddle.diag(x, offset=1)
  7. print(y)
  8. # [2 6]
  9. y = paddle.diag(x, offset=-1)
  10. print(y)
  11. # [4]