mindspore.scipy.linalg.block_diag

mindspore.scipy.linalg.block_diag(*arrs)[源代码]

根据输入的数组创建块对角矩阵。

输入为:ABC 的Tensor列表。输出为:在对角线上排列这些Tensor的块对角矩阵。

[[A, 0, 0],
 [0, B, 0],
 [0, 0, C]]

说明

Windows平台上还不支持 block_diag

参数:
  • arrs (list) - 最大支持2D的Tensor输入。 一个或多个Tensor,维度支持0D,1D、2D。

返回:

对角线上含有 ABC,…的Tensor,数据类型与 A 相同。

异常:
  • ValueError - 输入参数中存在维度大于2的Tensor。

支持平台:

GPU CPU

样例:

>>> import numpy as onp
>>> from mindspore import Tensor
>>> from mindspore.scipy.linalg import block_diag
>>> A = Tensor(onp.array([[1, 0], [0, 1]]))
>>> B = Tensor(onp.array([[3, 4, 5], [6, 7, 8]]))
>>> C = Tensor(onp.array([[7]]))
>>> P = Tensor(onp.zeros((2, ), dtype='int32'))
>>> print(block_diag(A, B, C))
[[1 0 0 0 0 0]
 [0 1 0 0 0 0]
 [0 0 3 4 5 0]
 [0 0 6 7 8 0]
 [0 0 0 0 0 7]]
>>> print(block_diag(A, P, B, C))
[[1 0 0 0 0 0 0 0]
 [0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 3 4 5 0]
 [0 0 0 0 6 7 8 0]
 [0 0 0 0 0 0 0 7]]