**Array indexing**

NumPy mainly offers three ways to index into arrays.

Slicing Based Indexing

Integer Based Indexing

Boolean Based Indexing

### Accessing a single element

Use [] for accessing the elements inside the array

Example 1

*** index starts from 0

**Slicing Based Indexing**

Similar to Python lists, numpy arrays can be sliced. As elements inside the arras are indexed

Since arrays may be multidimensional, you must specify a slice for each dimension of the array

A slice of an array is a view into the same data, so modifying it will modify the original array

When you index into numpy arrays using slicing, the resulting array view will always be a subarray of the original array.

### Accessing multiple element from 2d array

In 2 dimensional we have rows as one dimension and columns as other dimension (Matrix)

Rows and Columns index starts from 0

So whenever we are doing slicing we have to provide slicing for both rows as well as for columns

*** ending index not included

Example 2

1 ROW AND 1 COLUMN

Example 3

"N" ROWS AND "M" COLUMNS

**Integer array indexing**

Integer array indexing allows you to construct arbitrary arrays using the data from another array

Means no change in the original array if we do any change in the sub array

yield an array of lower rank than the original array

Since arrays may be multidimensional, you must specify an Integer array indexing for each dimension of the array

Example 4

**Boolean Based indexing**

Boolean array indexing lets you pick out arbitrary elements of an array

Means no change in the original array if we do any change in the extracted array

This type of indexing is used to select the elements of an array that satisfy some condition

It can also be called masking

Example 5

Example 6

## Mathematical Operations on Arrays

Basic mathematical functions can be applied on arrays

This mathematical functions operate elementwise on arrays

This mathematical operation are available as both as operators and function in numpy module

### Addition (+ or add() )

We can use + operator to do elementwise addition

Or we can use

**add()**functions in the NumPy module

Example 7

### Subtraction (- or subtract() )

We can use - operator to do elementwise subtraction

Or we can use

**subtract()**functions in the NumPy module

Example 8

### Multiplication (* or multiply() )

We can use * operator to do elementwise multiplication

Or we can use

**multiply()**functions in the NumPy module

Example 9

** dot()** (to get inner product)

*****is elementwise multiplication, not matrix multiplicationTo do matrix multiplication we have to use

**dot()**function provided by numpy module**dot()**functions computes the inner productsWhenever we are using this

**dot()**function we have to follow matrix multiplication to ruleFor matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the second matrix.

The resulting matrix, has the number of rows of the first and the number of columns of the second matrix as its final shape

So if you don't follow the above rule then we will get an error

Example 10

Example 11

### Broadcasting

Broadcasting is a powerful mechanism that allows numpy to work with arrays of different shapes when performing arithmetic operations.

Frequently we have a smaller array and a larger array, and we want to use the smaller array multiple times to perform some operation on the larger array

whenever we are doing computation on different shapes of array then numpy automatically uses this broadcasting technique

Broadcasting in a simple way we can understand it as duplicating the rows or column to match the shape of the larger array

In the below figure we have an array having a shape (3,3) means 3 rows and 3 columns and other array having a shape of (3,) means a single row having 3 elements so when we do multiplication on both the arrays the array with shape (3,) will duplicate the rows 2 times to match the larger array shaped as (3,3)

Example 11

Example 12

Example 13

### Division (/ or divide() )

We can use / operator to do elementwise division

Or we can use divide() functions in the NumPy module

Example 14

### Square Root (sqrt() )

We can use sqrt() function to get square root of each element in an array

Example 15

### Different F**unctions For Performing Computations On Arrays**

**sum(array object , axis)**

We can use sum() function to get sum of all elements

axis (its and optional parameter) parameters has two values 0 (column wise sum) , 1 (rows wise sum)

If we don't use axis parameter then the sum function will return sum of all the elements in the array

Example 16

**prod(array object , axis)**

We can use prod() function to get product of all elements

axis (its and optional parameter) parameters has two values 0 (column wise product) , 1 (rows wise product)

If we don't use axis parameter then the prod function will return product of all the elements in the array

Example 17

**cumsum(array object , axis)**

We can use cumsum() function to get the cumulative sum of the elements .

axis (its and optional parameter) parameters has two values 0 (column wise cumulative sum ) , 1 (rows wise cumulative sum )

Example 18

**cumprod(array object , axis)**

We can use cumprod() function to get the cumulative product of the elements .

axis (its and optional parameter) parameters has two values 0 (column wise cumulative product ) , 1 (rows wise cumulative product )

Example 19

**round(array object , decimals)**

Evenly round to the given number of decimals

decimal parameter is nothing but the Number of decimal places to round to (default: 0)

Example 20

### Descriptive statistics on the ndarray

### mean()

Computes the mean of ndarray

axis parameter can be used to compute mean row wise(1) or column wise(0)

If axis parameter is not used while computing the mean then mean will be computed for total elements inside the array

Example 21

### median()

Computes the median of ndarray

axis parameter can be used to compute mean row wise(1) or column wise(0)

If axis parameter is not used while computing the median then median will be computed for total elements inside the array

Example 22

### std() Standard Deviation

Computes the standard deviation of ndarray

axis parameter can be used to compute mean row wise(1) or column wise(0)

If axis parameter is not used while computing the standard deviation then standard deviation will be computed for total elements inside the array

Example 23

### min()

Computes the minimum value of ndarray

axis parameter can be used to compute mean row wise(1) or column wise(0)

If axis parameter is not used while computing the minimum value then minimum value will be computed from the total elements inside the array

Example 24

### argmin()

Gets the index of minimum value in the ndarray

Example 24

### max()

Computes the maximum value of ndarray

axis parameter can be used to compute mean row wise(1) or column wise(0)

If axis parameter is not used while computing the maximum value then maximum value will be computed from the total elements inside the array

Example 25

### argmax()

Gets the index of maximum value in the ndarray

Example 26

## Extras:-

## Transpose A Matrix

We can transpose a matrix(2d) by using T

It can be also used as a reshape function

taking the transpose of a rank 1 array does nothing

Example 27

## Tile Function

Tile function is used to create a new array by repeating the array column wise or row wise

Tile function takes two important arguments

array

repetitions along axis (should be given in a tuple format)

(row wise repetitions ,column wise repetitions)

(2,3) -- repeat 2 times row wise and three times column wise

Example 28

## Create An Empty Array With The Same Shape Of Other Array

We can create an empty array with the same shape of other array by using empty_like()

Example 29