mindspore.ops.matrix_diag

查看源文件
mindspore.ops.matrix_diag(x, k=0, num_rows=- 1, num_cols=- 1, padding_value=0, align='RIGHT_LEFT')[源代码]

使用 x 中的元素值作为输出tensor的对角线,其余用 padding_value 填充。

num_rowsnum_cols 为int32类型的单值tensor,若为-1,则表示输出tensor的最内层矩阵是一个方阵。

参数:
  • x (Tensor) - 输入tensor。

  • k (Union[int, Tensor], 可选) - 对角线偏移。正值表示超对角线,负值表示次对角线。当k是2个整数,表示子对角线的上界和下界。默认 0

  • num_rows (Union[int, Tensor], 可选) - 输出tensor的行数。默认 -1

  • num_cols (Union[int, Tensor], 可选) - 输出tensor的列数。默认 -1

  • padding_value (Union[int, float, Tensor], 可选) - 填充对角线带外区域的数值。默认 0

  • align (str, 可选) - 指定超对角线和次对角线的对齐方式。 可选 "RIGHT_LEFT""LEFT_RIGHT""LEFT_LEFT""RIGHT_RIGHT" 。 默认 "RIGHT_LEFT"

    • "RIGHT_LEFT" 表示将超对角线与右侧对齐(左侧填充行),将次对角线与左侧对齐(右侧填充行)。

    • "LEFT_RIGHT" 表示将超对角线与左侧对齐(右侧填充行),将次对角线与右侧对齐(左侧填充行)。

    • "LEFT_LEFT" 表示将超对角线和次对角线均与左侧对齐(右侧填充行)。

    • "RIGHT_RIGHT" 表示将超对角线和次对角线均与右侧对齐(左侧填充行)。

返回:

Tensor

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> x = mindspore.tensor([[8., 9., 0.],
...                      [1., 2., 3.],
...                      [0., 4., 5.]])
>>> k = mindspore.tensor([-1, 1], mindspore.int32)
>>> padding_value = mindspore.tensor(11.)
>>> num_rows = mindspore.tensor(3, mindspore.int32)
>>> num_cols = mindspore.tensor(3, mindspore.int32)
>>> output = mindspore.ops.matrix_diag(x, k, num_rows, num_cols, padding_value, align='LEFT_RIGHT')
>>> print(output)
[[ 1.  8. 11.]
 [ 4.  2.  9.]
 [11.  5.  3.]]
>>> print(output.shape)
(3, 3)