DEV Community

Sahil
Sahil

Posted on • Originally published at neuronize.dev on

NumPy 101: Learn NumPy in 10 minutes

Numpy is a popular Python library for scientific computing and data analysis. It provides a powerful array object, along with many useful functions and methods for manipulating and processing numerical data. In this blog post, I will share some of the essential numpy operations that can help you write faster and cleaner code. Whether you are a beginner or an expert, I hope you will find something useful in this numpy cheat sheet.

Installation

If you dont have numpy, then first you need to install it. You can install it in two days:

Using pip

pip install numpy

Enter fullscreen mode Exit fullscreen mode

Using Conda

First, activate your anaconda environment and then use the following command:

conda install -c anaconda numpy

Enter fullscreen mode Exit fullscreen mode

The Basics

Before doing any operations using numpy, we need to import it.

import numpy as np

Enter fullscreen mode Exit fullscreen mode

Scalar

Lets start from the very basic and learn how to create scalar values of numpy class.

# int type

python_int = 2
numpy_int = np.int32(2)
print(type(python_int)) # ---> <class 'int'>
print(type(numpy_int)) # ---> <class 'numpy.int32'>

# float type

python_float = 2.5
numpy_float = np.float32(2.5)
print(type(python_float)) # ---> <class 'float'>
print(type(numpy_float)) # ---> <class 'numpy.float32'>

Enter fullscreen mode Exit fullscreen mode

For more detail, take a look at the documentation https://numpy.org/doc/stable/reference/arrays.scalars.html#

Now, its time to move on to Arrays or Lists.

1-D Array

Lets now create a 1-D array using numpys array() method.

# creating an 1-D array of int type

one_d_array_int = np.array([1,2,3]) 
print(one_d_array_int) # ---> output : [1 2 3]

# creating an 1-D array of float type

one_d_array_float = np.array([1.5,2.5,3.5])
print(one_d_array_float) # ---> output : [1.5 2.5 3.5]

Enter fullscreen mode Exit fullscreen mode

2-D Array

Lets now create a 2-D array using numpys array() method.

# 2-D int array

two_d_array_int = np.array([
                [1,2,3],
                [4,5,6],
                [7,8,9]
               ])
print(two_d_array_int) # ---> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 2-D float array

two_d_array_float= np.array([
                [1.1,2.1,3.0],
                [4.1,5.1,6.1],
                [7.1,8.1,9.1]
               ])
print(two_d_array_float) # ---> [[1.1, 2.1, 3.0], [4.1, 5.1, 6.1], [7.1, 8.1, 9.1]]

Enter fullscreen mode Exit fullscreen mode

Get The Dimension of an Array

Now, lets learn how do you get the dimension of the any array.

# If the array is a 1-D array, then it'll return 1
print(one_d_array_int.ndim) # ---> output : 1

# If the array is a 2-D array, then it'l return 2
print(two_d_array_int.ndim) # ---> output : 2

Enter fullscreen mode Exit fullscreen mode

Get The Shape of an Array


print(one_d_array_int.shape) # ---> output : (3,)

print(two_d_array_int.shape) # ---> output : (3, 3)

Enter fullscreen mode Exit fullscreen mode

As, the one_d_array_int is basically a vector, it returns the shape of a vector, whereas two_d_array_int is a matrix which has 3 rows and 3 columns and thats why it returns the shape as (3, 3).

Get the Data Type of an Array

print(one_d_array_int.dtype) # ---> output : dtype('int32')

Enter fullscreen mode Exit fullscreen mode

By default, its int32 and there are different size of int in numpy that you can use to optimise your space consumption.

Manipulating Elements of an Array

Lets create a new array and then we will perform operations on this new array.

a = np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]])
print(a) # ---> output : [[1 2 3 4 5 6 7]
# [8 9 10 11 12 13 14]]

Enter fullscreen mode Exit fullscreen mode

Access a Specific Element

Lets say we want to access first rows third element.

# accessing 1st row's 3rd element
print(a[0,2]) # ---> output : 3

Enter fullscreen mode Exit fullscreen mode

In numpy to access a specific element then, we first need to specify the row and then the column.

Remember, numpy also follows the 0-based indexing and due to this if we want to get the first row, we need to write 0 and not 1 and same goes for the column value if we needed the third element, then well write 2 and not 3.

Access only a specific row or column

# accessing only the first row
print(a[0,:]) # ---> output : [1 2 3 4 5 6 7]

# accessing only the second column
print(a[:,1]) # ---> output : [2 9]

Enter fullscreen mode Exit fullscreen mode

Access elements with skip steps

# [startindex:endindex:stepsize]
print(a[0, 1:-1:2]) # ---> output : [2 4 6]

Enter fullscreen mode Exit fullscreen mode

Here, you are accessing first rows columns from 2nd column to the last column by accessing every 2nd column.

Changing elements value

a[0,2] = 99
print(a) # ---> output : [[1 2 99 4 5 6 7]
# [8 9 10 11 12 13 14]]

Enter fullscreen mode Exit fullscreen mode

Here, you first assigned the value 99 to the first rows third column.

Special Arrays in Numpy

Zero Matrix

# creating a zero matrix of shape(2,3)

print(np.zeros((2,3))) # ---> output : [[0. 0. 0.]
 # [0. 0. 0.]
 # [0. 0. 0.]]

Enter fullscreen mode Exit fullscreen mode

Here, 2 is the number of rows and 3 is the number of columns.

One Matrix

# All 1s matrix
print(np.ones((3,2,2))) # ---> output : [[[1. 1.]
# [1. 1.]]
#
# [[1. 1.]
# [1. 1.]]
#                                      
# [[1. 1.]
# [1. 1.]]]

# creating ones matrix int type
print(np.ones((3,2,2)), dtype='int32') # ---> output : [[[1 1]
# [1 1]]
#
# [[1 1]
# [1 1]]
#                                      
# [[1 1]
# [1 1]]]

Enter fullscreen mode Exit fullscreen mode

Here, you are creating a matrix of ones. If you dont specify any data type then itll by default generate float type elements.

Random Array

If you want to have an array having random values of a specific shape, then you can use np.random.rand() method.

print(np.random.rand(3,3)) # ---> output : [[0.10671372 0.31133182 0.56572354]
# [0.34792672 0.88867917 0.25310353]
# [0.70052117 0.53243035 0.67948057]]

Enter fullscreen mode Exit fullscreen mode

Random Array ( Only Integer Values )

If you want to have an array having random int values of a specific shape, then you can use np.random.randint() method.

# np.random.randint(start_value,end_value,size)

print(np.random.randint(-1,5, size=(3,3))) # ---> output : [[0 -1 2]
# [4 2 1]
# [4 4 0]]

Enter fullscreen mode Exit fullscreen mode

start_value is inclusive thats why -1 is there in the output array.

end_value is exclusive thats why there is no 5 in the output array.

If you dont mention the start_value, then the default start value would be 0. You have to mention the end_value.

Identity Matrix

If you want to create an Identiity matrix, then you can use np.identity() method.

print(np.identity(3)) # ---> output : [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]

Enter fullscreen mode Exit fullscreen mode

You have to mention the number_of_dimensions.

Transposing Array

a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a) # output : [[2 -1 1]
                                          # [0 1 1]]

print(a.T) # output : [[2 0]
                                          # [-1 1]
                                          # [1 1]]

Enter fullscreen mode Exit fullscreen mode

Reshape Array

If you want to change the shape of the array you can use reshape() method.

a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a) # output : [[2 -1 1]
                                          # [0 1 1]]

print(a.reshape(3,2)) # output : [[2 0]
                                          # [-1 1]
                                          # [1 1]]

print(a.reshape(1,6)) # output : [[1 2 3 2 2 2]]

Enter fullscreen mode Exit fullscreen mode

Note : You cant reshape (2,3) array to (3,3) as the original array has 6 cells while the new shape you want to have has 9 cells.

Fill with Any Number

If you want to have an aray filled with a specific value, then you can use np.full() method.

print(np.full((3,3), 14)) # ---> output : [[14 14 14]
# [14 14 14]
# [14 14 14]]

Enter fullscreen mode Exit fullscreen mode

Fill Like

If you want to have an array with a specific value and you want it to be of same shape as some other array, then you can use np.full_like() method.

# Any other number (full_like)
print(np.full_like(a, 4)) # ---> output : [[4 4 4 4 4 4 4]
# [4 4 4 4 4 4 4]]

Enter fullscreen mode Exit fullscreen mode

This method takes the shape of the mentioned array and a value, then it creates a new array of the same shape with the given value.

Copy Array

a = [1,2,3] # created an array a
b = [10,20,30] # created an array b
print(a) # output : [1 2 3]
a = b # I'll explain it below
b[1] = 200 # changed b's 2nd element's value to 200
print(a) # output : [10 200 30] HOW??????

Enter fullscreen mode Exit fullscreen mode

Lets first understand what happened here : a = b.

Here, the values of b didnt get copied to a, instead a starts to point to b which in-turn changes the values of a but the catch is that whenever youll change something in b the same will reflect on a.

Stacking Arrays

If you want to stack multiple arrays vertically or horizontally, you can use vstack() method or hstack() method respectively.

# Vertically stacking vectors
v1 = np.array([1,2,3,4]) # created array v1
v2 = np.array([5,6,7,8]) # create array v2

np.vstack([v1,v2,v1,v2]) # output : [[1 2 3 4]
                                        # [5 6 7 8]
                                        # [1 2 3 4]
                                        # [5 6 7 8]]
print(np.hstack([v1,v2])) # output : [1 2 3 4 5 6 7 8]

Enter fullscreen mode Exit fullscreen mode

Aggregate Functions

a = np.array([1, 2, 3])
print(a.sum()) # sum of all values of a
print(a.max()) # max of all elements of a
print(a.mean()) # return mean of a
print(np.median(a)) # return median of a
print(np.std(a)) # return standard deviation of a

Enter fullscreen mode Exit fullscreen mode

Conclusion

This concludes our numpy cheatsheet blogpost. We hope you found it useful and learned some new tricks to work with arrays and matrices in Python. Numpy is a powerful and versatile library that can help you perform various numerical computations and data analysis tasks. If you want to learn more about numpy, you can check out the official documentation or some of the online tutorials and courses available. Thank you for reading and happy coding!

Top comments (0)