# strided_slice¶

`paddle.fluid.layers.``strided_slice`(input, axes, starts, ends, strides)[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\) th(here 0 is the initial position). The `strides` represents steps of slicing and if the `strides` is negative, slice operation is in the opposite direction. 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` , `ends` and `strides`. Following examples will explain how strided_slice works:

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

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

Case3:
Given:
data = [ [1, 2, 3, 4], [5, 6, 7, 8], ]
axes = [0, 1]
starts = [-1, 1000]
ends = [-1, 1000]
strides = [1, 3]
Then:
result = [ , ]
```
Parameters
• input (Variable) – An N-D `Tensor` or `LoDTensor` . The data type is `float32`, `float64`, `int32` or `int64`.

• axes (list|tuple) – The data type is `int32` . Axes that starts and ends apply to. It’s optional. If it is not provides, it will be treated as \([0,1,...,len(starts)-1]\).

• starts (list|tuple|Variable) – The data type is `int32` . If `starts` is a list or tuple, the elements of it should be integers or Tensors with shape . If `starts` is an Variable, it should be an 1-D Tensor. It represents starting indices of corresponding axis in `axes`.

• ends (list|tuple|Variable) – The data type is `int32` . If `ends` is a list or tuple, the elements of it should be integers or Tensors with shape . If `ends` is an Variable, it should be an 1-D Tensor . It represents ending indices of corresponding axis in `axes`.

• strides (list|tuple|Variable) – The data type is `int32` . If `strides` is a list or tuple, the elements of it should be integers or Tensors with shape . If `strides` is an Variable, it should be an 1-D Tensor . It represents slice step of corresponding axis in `axes`.

Returns

A `Tensor` or `LoDTensor` with the same dimension as `input`. The data type is same as `input`.

Return type

Variable

Raises
• `TypeError` – The type of `starts` must be list, tuple or Variable.

• `TypeError` – The type of `ends` must be list, tuple or Variable.

• `TypeError` – The type of `strides` must be list, tuple or Variable.

Examples

```import paddle.fluid as fluid

input = fluid.data(
name="input", shape=[3, 4, 5, 6], dtype='float32')

# example 1:
# attr starts is a list which doesn't contain tensor Variable.
axes = [0, 1, 2]
starts = [-3, 0, 2]
ends = [3, 2, 4]
strides_1 = [1, 1, 1]
strides_2 = [1, 1, 2]
sliced_1 = fluid.layers.strided_slice(input, axes=axes, starts=starts, ends=ends, strides=strides_1)
# sliced_1 is input[:, 0:3:1, 0:2:1, 2:4:1].

# example 2:
# attr starts is a list which contain tensor Variable.
minus_3 = fluid.layers.fill_constant(, "int32", -3)
sliced_2 = fluid.layers.strided_slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends, strides=strides_2)
# sliced_2 is input[:, 0:3:1, 0:2:1, 2:4:2].
```