mindspore.ops.slice

mindspore.ops.slice(input_x, begin, size)[源代码]

根据指定shape对输入Tensor进行切片。

begin 指定的位置开始,根据 size 的shape对输入Tensor进行切片。 begin 表示 input_x 每个维度的偏移量。 size 表示输出Tensor的大小。

Note

begin 的起始值为0,size 的起始值为1。

如果 size[i] 为-1,则维度i中的所有剩余元素都包含在切片中。这相当于 \(size[i] = input\_x.shape(i) - begin[i]\)

参数:
  • input_x (Tensor) - Slice的输入,任意维度的Tensor。

  • begin (Union[tuple, list]) - 切片的起始位置。只支持常量值(>=0)。

  • size (Union[tuple, list]) - 切片的大小。只支持常量值。

返回:

Tensor,shape与输入 size 相同,数据类型与输入 input_x 的相同。

异常:
  • TypeError - beginsize 既不是tuple也不是list。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor
>>> from mindspore import ops
>>> import numpy as np
>>> data = Tensor(np.array([[[1, 1, 1], [2, 2, 2]],
...                         [[3, 3, 3], [4, 4, 4]],
...                         [[5, 5, 5], [6, 6, 6]]]).astype(np.int32))
>>> output = ops.slice(data, (1, 0, 0), (1, 1, 3))
>>> print(output)
[[[3 3 3]]]
>>> output = ops.slice(data, (1, 0, 0), (1, 1, 2))
>>> print(output)
[[[3 3]]]
>>> output = ops.slice(data, (1, 0, 0), (1, 1, 1))
>>> print(output)
[[[3]]]
>>> output = ops.slice(data, (1, 1, 0), (1, 1, 3))
>>> print(output)
[[[4 4 4]]]
>>> output = ops.slice(data, (1, 0, 1), (1, 1, 2))
>>> print(output)
[[[3 3]]]