mindspore.ops.matrix_band_part

View Source On Gitee
mindspore.ops.matrix_band_part(x, lower, upper)[source]

Copy a tensor setting everything outside a central band in each innermost matrix to zero.

Warning

This is an experimental API that is subject to change or deletion.

Parameters
  • x (Tensor) – Input tensor. \((*, m, n)\) where \(*\) means, any number of additional dimensions.

  • lower (Union[int, Tensor]) – Number of subdiagonals to keep. The data type must be int32 or int64. If negative, keep entire lower triangle.

  • upper (Union[int, Tensor]) – Number of superdiagonals to keep. The data type must be int32 or int64. If negative, keep entire upper triangle.

Returns

Tensor, has the same type and shape as x.

Raises
  • TypeError – If x is not a Tensor.

  • TypeError – If dtype of x is not valid.

  • TypeError – If lower is neither a number nor a Tensor.

  • TypeError – If upper is neither a number nor a Tensor.

  • TypeError – If dtype of lower is neither int32 nor int64.

  • TypeError – If dtype of upper is neither int32 nor int64.

  • ValueError – If the shape of x is not greater than or equal to 2D.

  • ValueError – If the shape of lower is not equal to 0D.

  • ValueError – If the shape of upper is not equal to 0D.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> x = Tensor(np.ones([2, 4, 4]).astype(np.float32))
>>> output = ops.matrix_band_part(x, 2, 1)
>>> print(output)
[[[1. 1. 0. 0.]
  [1. 1. 1. 0.]
  [1. 1. 1. 1.]
  [0. 1. 1. 1.]]
 [[1. 1. 0. 0.]
  [1. 1. 1. 0.]
  [1. 1. 1. 1.]
  [0. 1. 1. 1.]]]