 Python: Slice Notation on NumPy Arrays

# Python: Slice Notation on NumPy Arrays ### Introduction

The term slicing in programming usually refers to obtaining a substring, sub-tuple, or sublist from a string, tuple, or list respectively.

Python offers an array of straightforward ways to slice not only these three but any iterable. An iterable is, as the name suggests, any object that can be iterated over.

In this article, we'll go over everything you need to know about Slicing Numpy Arrays in Python.

### NumPy Array slicing

The most common way to slice a NumPy array is by using the : operator with the following syntax:

array[start:end]
array[start:end:step]


The start parameter represents the starting index, end is the ending index, and step is the number of items that are "stepped" over.

NumPy is a free Python package that offers, among other things, n-dimensional arrays.

Slicing 1D (one dimensional) arrays in NumPy can be done with the same notation as slicing regular lists in Python:

import numpy as np
arr = np.array([1,2,3,4])
print(arr[1:3:2])
print(arr[:3])
print(arr[::2])


Output:


[1 2 3]
[1 3]


#### 2D NumPy Array Slicing

A 2D array in NumPy is an array of arrays, a 3D array is an array of arrays of arrays and so forth. A 2D array can be represented as a matrix like so:

import numpy
arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)


Let's print this matrix out:

[[ 1  2  3  4]
[ 5  6  7  8]
[ 9 10 11 12]]


Slicing a 2D array can eighter result in an array or a matrix. The syntax that results in a matrix would be:

arr[startx:endx:stepx, starty:endy:stepy]


The syntax that results in an array:

arr[startx:endx:stepx, const]
arr[const, starty:endy:stepy]


## Free eBook: Git Essentials

Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!

Utilizing this syntax results in a matrix who's elements are the colums in the range from startx to endx on the x-axis, and rows in the range from starty to endy on the y-axis of the original matrix:

Let's take a look at how we can slice this matrix and what the slicing results in:

import numpy

arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
print("The original matrix:")
print(arr)

print("A sliced submatrix:")
print(arr[1:4,2:4])

print("A sliced subarray:")
print(arr[1,:])

print("A sliced submatrix:")
print(arr[:,3:])

print("A sliced subarray:")
print(arr[:,3])


This code segment prints out:

The original matrix:
[[ 1  2  3  4]
[ 5  6  7  8]
[ 9 10 11 12]
[13 14 15 16]]
A sliced submatrix:
[[ 7  8]
[11 12]
[15 16]]
A sliced subarray:
[5 6 7 8]
A sliced submatrix:
[[ 4]
[ 8]

]
A sliced subarray:
[ 4  8 12 16]


### Conclusion

Slicing any sequence in Python is easy, simple, and intuitive. Negative indexing offers an easy way to acquire the first or last few elements of a sequence, or reverse its order.

Last Updated: May 24th, 2022

Get tutorials, guides, and dev jobs in your inbox.

Kristina PopovicAuthor

CS student with a passion for juggling and math. Project

### Real-Time Road Sign Detection with YOLOv5

# python# machine learning# computer vision# pytorch

If you drive - there's a chance you enjoy cruising down the road. A responsible driver pays attention to the road signs, and adjusts their... David Landup
Details Project

### Data Visualization in Python: The Collatz Conjecture

# python# matplotlib# data visualization

The Collatz Conjecture is a notorious conjecture in mathematics. A conjecture is a conclusion based on existing evidence - however, a conjecture cannot be proven....  Details