NumPy 101: Learn NumPy in 10 minutes
Tags: python, numpy, datascience, machinelearning
Published: 2023-07-02 07:43:18

---
title: NumPy 101: Learn NumPy in 10 minutes
published: true
date: 2023-04-01 04:23:44 UTC
tags: python, numpy, datascience, machinelearning
canonical_url: https://neuronize.dev/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

```

## **Using Conda**

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

```
conda install -c anaconda numpy

```

# **The Basics**

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

```
import numpy as np

```

## **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'>

```

For more detail, take a look at the documentation [https://numpy.org/doc/stable/reference/arrays.scalars.html#](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]

```

## **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]]

```

## **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

```

## **Get The Shape of an Array**

```

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

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

```

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')

```

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]]

```

## **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

```

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]

```

## **Access elements with skip steps**

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

```

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]]

```

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.]]

```

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]]]

```

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]]

```

## **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]]

```

`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.]]

```

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]]

```

## **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]]

```

> _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]]

```

## **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]]

```

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??????

```

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]

```

# **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

```

# **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!