mindspore.ops.FillDiagonal

class mindspore.ops.FillDiagonal(fill_value, wrap=False)[源代码]

填充至少具有二维的Tensor的主对角线。当输入的维度大于2时,所有维度必须等长。此函数原地修改输入Tensor,并返回输入Tensor。

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • fill_value (float) - input_x 对角线的填充值。

  • wrap (bool,可选) - 控制对于一个高矩阵(即矩阵的行数大于列数),对角线元素是否继续延伸到剩余的行。具体效果详见下方代码样例。默认值:False。

输入:
  • input_x (Tensor) - shape为 \((x_1, x_2, ..., x_R)\) ,其数据类型必须为:float32、int32或者int64。

输出:
  • y (Tensor) - Tensor,和输入 input_x 具有相同的shape和dtype。

异常:
  • TypeError - 如果 input_x 的dtype不是:float32、int32或者int64。

  • ValueError - 如果 input_x 的维度没有大于1。

  • ValueError - 当维度大于2时,每个轴的大小不相等。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]).astype(np.float32))
>>> fill_value = 9.9
>>> fill_diagonal = ops.FillDiagonal(fill_value)
>>> y = fill_diagonal(x)
>>> print(y)
[[9.9 2.  3. ]
 [4.  9.9 6. ]
 [7.  8.  9.9]]
>>> x = Tensor(np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5]]).astype(np.int32))
>>> fill_value = 9.0
>>> fill_diagonal = ops.FillDiagonal(fill_value)
>>> y = fill_diagonal(x)
>>> print(y)
[[9 0 0]
 [1 9 1]
 [2 2 9]
 [3 3 3]
 [4 4 4]
 [5 5 5]]
>>> x = Tensor(np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3],
...                      [4, 4, 4], [5, 5, 5], [6, 6, 6]]).astype(np.int64))
>>> fill_value = 9.0
>>> wrap = True
>>> fill_diagonal = FillDiagonal(fill_value, wrap)
>>> y = fill_diagonal(x)
>>> print(y)
[[9 0 0]
 [1 9 1]
 [2 2 9]
 [3 3 3]
 [9 4 4]
 [5 9 5]
 [6 6 9]]