# slice¶

paddle. slice ( input, axes, starts, ends ) [source]

This operator produces a slice of `input` along multiple axes. Similar to numpy: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html Slice uses `axes`, `starts` and `ends` attributes to specify the start and end dimension for each axis in the list of axes and Slice uses this information to slice the input data tensor. If a negative value is passed to `starts` or `ends` such as \(-i\), it represents the reverse position of the axis \(i-1\) (here 0 is the initial position). If the value passed to `starts` or `ends` is greater than n (the number of elements in this dimension), it represents n. For slicing to the end of a dimension with unknown size, it is recommended to pass in INT_MAX. The size of `axes` must be equal to `starts` and `ends`. Following examples will explain how slice works:

```Case1:
Given:
data = [ [1, 2, 3, 4], [5, 6, 7, 8], ]
axes = [0, 1]
starts = [1, 0]
ends = [2, 3]
Then:
result = [ [5, 6, 7], ]

Case2:
Given:
data = [ [1, 2, 3, 4], [5, 6, 7, 8], ]
axes = [0, 1]
starts = [0, 1]
ends = [-1, 1000]       # -1 denotes the reverse 0th position of dimension 0.
Then:
result = [ [2, 3, 4], ] # result = data[0:1, 1:4]
```
Parameters
• input (Tensor) – A `Tensor` . The data type is `float16`, `float32`, `float64`, `int32` or `int64`.

• axes (list|tuple) – The data type is `int32` . Axes that starts and ends apply to .

• starts (list|tuple|Tensor) – The data type is `int32` . If `starts` is a list or tuple, each element of it should be integer or 0-D int Tensor with shape []. If `starts` is an Tensor, it should be an 1-D Tensor. It represents starting indices of corresponding axis in `axes`.

• ends (list|tuple|Tensor) – The data type is `int32` . If `ends` is a list or tuple, each element of it should be integer or 0-D int Tensor with shape []. If `ends` is an Tensor, it should be an 1-D Tensor . It represents ending indices of corresponding axis in `axes`.

Returns

Tensor, A `Tensor`. The data type is same as `input`.

Examples

```>>> import paddle

>>> input = paddle.rand(shape=[4, 5, 6], dtype='float32')
>>> # example 1:
>>> # attr starts is a list which doesn't contain tensor.
>>> axes = [0, 1, 2]
>>> starts = [-3, 0, 2]
>>> ends = [3, 2, 4]
>>> sliced_1 = paddle.slice(input, axes=axes, starts=starts, ends=ends)
>>> # sliced_1 is input[1:3, 0:2, 2:4].

>>> # example 2:
>>> # attr starts is a list which contain tensor.
>>> minus_3 = paddle.full([1], -3, "int32")
>>> sliced_2 = paddle.slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends)
>>> # sliced_2 is input[1:3, 0:2, 2:4].
```