# Mastering Python Numpy: Essential Functions and Examples

NumPy (Numerical Python) is a powerful library for scientific computing in Python. It provides support for large, multi-dimensional arrays and matrices, along with a collection of mathematical functions to operate on these elements. In this tutorial, we will cover the essential functions of NumPy and provide examples of how to use them effectively.

## Table of Contents

- Installation and Importing
- Creating NumPy Arrays
- Array Attributes and Methods
- Array Indexing and Slicing
- Array Manipulation
- Mathematical Operations
- Statistical Functions
- Linear Algebra Functions

## Installation and Importing

To install NumPy, you can use pip:

```
pip install numpy
```

After installation, import the library with an alias for easy access:

```
import numpy as np
```

## Creating NumPy Arrays

To create a NumPy array, use the `np.array()`

function:

```
arr = np.array([1, 2, 3])
print(arr)
```

Output:

`[1 2 3]`

You can also create a multi-dimensional array:

```
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d)
```

Output:

```
[[1 2 3]
[4 5 6]]
```

### Other Array Creation Functions

`np.zeros()`

: Creates an array filled with zeros.`np.ones()`

: Creates an array filled with ones.`np.eye()`

: Creates an identity matrix.`np.arange()`

: Creates an array with a range of numbers.`np.linspace()`

: Creates an array with evenly spaced numbers.

## Array Attributes and Methods

Some essential attributes and methods for NumPy arrays:

`shape`

: Returns the shape of the array.`size`

: Returns the total number of elements in the array.`ndim`

: Returns the number of dimensions of the array.`dtype`

: Returns the data type of the array elements.

```
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d.shape)
print(arr_2d.size)
print(arr_2d.ndim)
print(arr_2d.dtype)
```

Output:

```
(2, 3)
6
2
int64
```

## Array Indexing and Slicing

Access elements in a NumPy array using square brackets and indices:

```
arr = np.array([1, 2, 3, 4, 5])
print(arr[0])
print(arr[-1])
```

Output:

```
1
5
```

For multi-dimensional arrays, use comma-separated indices:

```
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d[0, 1])
```

Output:

`2`

### Slicing

Use slicing to extract a portion of the array:

```
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4])
```

Output:

`[2 3 4]`

## Array Manipulation

Some essential functions for manipulating arrays:

`reshape()`

: Changes the shape of an array.`concatenate()`

: Joins two or more arrays.`split()`

: Splits an array into multiple sub-arrays.`transpose()`

: Transposes an array (swaps rows and columns).

## Mathematical Operations

Perform element-wise arithmetic operations on arrays:

```
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)
print(arr1 * arr2)
```

Output:

```
[5 7 9]
[ 4 10 18]
```

### Broadcasting

Broadcasting allows you to perform arithmetic operations on arrays with different shapes:

```
arr = np.array([1, 2, 3])
print(arr * 2)
```

Output:

`[2 4 6]`

## Statistical Functions

Some essential statistical functions in NumPy:

`np.mean()`

: Computes the mean of an array.`np.median()`

: Computes the median of an array.`np.std()`

: Computes the standard deviation of an array.

## Linear Algebra Functions

Some essential linear algebra functions in NumPy:

`np.dot()`

: Computes the dot product of two arrays.`np.linalg.inv()`

: Computes the inverse of a square matrix.`np.linalg.eig()`

: Computes the eigenvalues and eigenvectors of a square matrix.

Now you have a solid understanding of the essential functions and examples of using Python NumPy. This powerful library will help you perform numerical computations, data manipulations, and scientific computing with ease.