# Python NumPy Tutorial for Data Science

In this NumPy Tutorial, we will learn what is **NumPy**. We will learn about its **uses**, **installation**, **operations** and many other features.

So let’s start!!!

### NumPy Introduction

NumPy stands for **‘Numerical Python’**. It is a **package** in Python to work with **arrays**. It is a **basic scientific library**. Its most important feature is the** n-dimensional array object**. It has uses in **statistical functions**, **linear algebra**, **arithmetic operations**, **bitwise operations**, etc.

We perform all the **operations** on the** array elements**. We can **initialize** these **arrays** in several ways.

### Prerequisite to Learn NumPy

The **two basic prerequisites** for NumPy are **Python** and **Mathematics**. We need to know the **python basics** to work with the **NumPy module**.

The functions available in **NumPy** are **built** on **python language**. We can hence combine the knowledge of **python arrays** and **list** for **array initialization** and **operations**.

### NumPy Installation

We can install Python NumPy by going to the **command prompt** and **typing** a **simple command** **pip** **install NumPy**. Then go to the **IDE** and use the **import command import NumPy** as **np**.

We can now **access** all the **functionalities** of the **NumPy module**.

### Uses of NumPy

NumPy is one of the most useful **external libraries** available in Python. It has a wide variety of **functions** to work with **arrays** and a **powerful multi-dimensional array object**. It has **operations** that are **applicable** to a **vast range** of **platforms**.

Numpy can be put to use for **storing**, **manipulation**, and **deletion** of **array elements**. We can use it for **sorting**, **indexing**, and **stacking** of the **array elements**. It has modules regarding various operations:

- Arithmetic operations
- Statistical Operations
- Bitwise Operators
- Linear Algebra
- Copying and viewing arrays
- Stacking
- Searching, Sorting, and counting, etc.
- Mathematical Operations
- Broadcasting
- Matplotlib for graphical representations
- Matrix Operations, etc.

### NumPy vs. Python arrays

The **NumPy library** is a great **alternative** to **python arrays**. The difference is that the NumPy arrays are **homogeneous** that makes it **easier** to work with. We can **initialize** the **array elements** in many ways, one being which is through the **python lists**.

The NumPy arrays are convenient as they have the following **three features**–

**Less Memory Requirement****Faster Processing****Convenience of use**

### Data types in NumPy

Numpy **supports** **more data types** as compared to Python. These data types are instances of **dtype objects**. Some of the **scalar data** **types** are given in the table below.

Sr.No. |
Data Types |
Description |

1. | bool_ | Boolean True/False |

2. | int_ | Integer type |

3. | intc | Same as C int |

4. | intp | An integer used for indexing |

5. | int8 | Byte(-128 to 127) |

6. | int16 | Integer(-32768 to 32767) |

7. | int32 | Integer(-2147483648 to 2147483647) |

8. | int64 | Integer (-9223372036854775808 to 9223372036854775807) |

9. | uint8 | Unsigned integer(0 to 225) |

10. | unit16 | Unsigned integer(0 to 65535) |

11. | unit32 | Unsigned Integer(0 to 4294967295) |

12. | unit64 | Unsigned Integer(0 to 18446744073709551615) |

13. | float_ | Shorthand for float64 |

14. | float16 | Half precision float |

15. | float32 | Single precision float |

16. | float64 | Double precision float |

17. | complex_ | Shorthand for comples128 |

18. | complex64 | Two 32bit float complex number |

19. | complex128 | Two 64 bit float complex number |

### NumPy Operations

NumPy consists of a **wide range of functions** to work with **arrays**.

#### 1. Numpy ndim

It is the **function** which **determines** the **dimensions** of the **input array**

import numpy as np a = np.array([(1,1,1),(2,2,2)]) print(a.ndim)

**Output**

#### 2. Numpy itemsize()

We use this function to determine the **size of **the **array elements**.

import numpy as np a = np.array([(1,1)]) print(a.itemsize)

**Output**

#### 3. Numpy dtype()

We use this function to determine the **data type** of the **array elements**.

import numpy as np a = np.array([(1,1)]) print(a.dtype)

**Output**

#### 4. Numpy reshape()

We use this function to **reassign** the **array** a **new shape**.

import numpy as np a = np.array([(1,1,1),(2,2,2)]) print(a) a=a.reshape(3,2) print(a)

**Output**

[2 2 2]]

[[1 1]

[1 2]

[2 2]]

#### 5. Numpy slicing()

It is for **extracting** a **particular set** of **elements** from the **array**.

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

**Output**

#### 6. Numpy linspace()

This is for array generation of **evenly spread elements**.

import numpy as np a=np.linspace(1,5,10) print(a)

**Output**

3.66666667 4.11111111 4.55555556 5. ]

#### 7. Numpy min() / Numpy max()

We can find the **minimum** and **maximum** **values** from the **array**.

import numpy as np arr= np.array([10,20,30]) print(arr.min()) print(arr.max())

**Output**

30

#### 8. Numpy sum()

This is to **return** the **sum** of all the **array elements**

import numpy as np arr= np.array([10,50,100]) print(arr.sum())

**Output**

#### 9. Numpy sqrt()/ Numpy std()

We can determine the **square root** and **standard deviation** of the **array elements**.

import numpy as np a=np.array([(1,2,3),(4,5,6)]) print(np.sqrt(a)) print(np.std(a))

**Output**

[2. 2.23606798 2.44948974]]

1.707825127659933

#### 10. +,-,/, *

We can determine the **sum**, **difference**, **division**, and **multiplication** of the **array elements** with the use of these **operators**.

import numpy as np x= np.array([(1,1,1),(2,2,2)]) y= np.array([(3,3,3),(4,4,4)]) print(x+y) print(x-y) print(x*y) print(x/y)

**Output**

[6 6 6]]

[[-2 -2 -2]

[-2 -2 -2]]

[[3 3 3]

[8 8 8]]

[[0.33333333 0.33333333 0.33333333]

[0.5 0.5 0.5 ]]

#### 11. Numpy hstack/ Numpy vstack()

These are **stacking functions**, we can perform **horizontal** and **vertical** **stacking** of **arrays**.

import numpy as np x= np.array([(1,1,1),(2,2,2)]) y= np.array([(3,3,3),(4,4,4)]) print(np.vstack((x,y))) print(np.hstack((x,y)))

**Output**

[2 2 2]

[3 3 3]

[4 4 4]]

[[1 1 1 3 3 3]

[2 2 2 4 4 4]]

#### 12. Numpy ravel()

This function concerts the **entire array** into a **single column**.

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

**Output**

There are a **few special functions** available in **NumPy**. We can plot the **sine**, **cos,** and **tan curves** using the **matplotlib module. **It is an **alternative** to other **plotting software** like **MatLab**.

It is a great alternative when working with **graphical representations**.

import numpy as np import matplotlib.pyplot as plt arr1= np.arange(0,2*np.pi,0.5) arr2=np.sin(arr1) arr3=np.cos(arr1) arr4=np.tan(arr1) plt.plot(arr1,arr2) plt.plot(arr1,arr3) plt.plot(arr1,arr4) plt.show()

### Summary

Here we come to the end of **Numpy Tutorial**.

NumPy is the **basic library** for **mathematical operations** in **Machine Learning**. It has a **vast range of functions** to **manipulate arrays** and **matrices**. It is a very **convenient** and **user-friendly library**. It has made to work with an **array element** a much easier task.

Working with arrays has turned out to be a much **faster** and **time-efficient process**. It is very easy to **install** and **implement**.

There are many **modules** in **NumPy** that are specific to **various complex functions**. It can also **extend functionalities** by **combining** with **other python libraries**.