Python in the Computer science branch works under libraries. One of the libraries is NumPy which is very essential for coding. It is generally used to work with arrays. It adds support for large, multi-dimensional arrays and matrices, along with a large collection of high-level mathematical functions to operate on these arrays.

## About Numpy

The ancestor of NumPy, i.e. Numeric was created by Jim Hugunin with the help of several other developers. In 2005, Travis Oliphant created NumPy by incorporating the features of the competing Numarray into the Numeric with extensive modifications. Technically, NumPy is open-source software and has so many contributions.

## Uses of NumPy

**An alternative for the lists and arrays in Python**: The Arrays in Numpy are equivalent to the lists in python. It is a homogenous set of elements. This feature of the NumPy array differentiates them from the python arrays. It maintains the uniformity for mathematical operations which would not be possible with the heterogeneous elements.

**NumPy maintains minimal memory**: Arrays in the NumPy are objects. Python deletes and creates these objects continually. Therefore, the memory allocation is less as per the Python lists. NumPy has several features that avoid memory wastage in the data buffer. It holds the functions like copies, view, and indexing that helps in saving a lot of memories. Indexing helps to return the view of the original array, which implements the reuse of data

**Using NumPy for multi-dimensional arrays**: A multi-dimensional array can be created in NumPy. These arrays have various rows and columns. Therefore, a multi-dimensional array implements the creation of matrices. These matrices are easy to work with. With this, the code also becomes memory efficient.

**Mathematical operations with NumPy**: Working with NumPy includes easy to use functions for the mathematical computations on the array data set.

## NumPy Array Applications

There are a number of applications of Numpy applications as well as the areas where the Numpy library is used in python. Some of them are listed below:

### Shape Manipulations

If the output produces the same number of elements then the user can change array dimensions at the runtime. np.reshape(…) function is applied on the array to reshape it. This will be useful for performing the various operations. We can use it whenever we want to broadcast two non-similar arrays.

### Array Generation

We generate the array data set for implementing various functions. We can also generate a predefined set of numbers for the array elements using the np.arrange(…)function. Reshape function is useful to generate a different set of dimensions. The user can generate some random functions for an array having random values.

### Array Dimension

Numpy consists of both arrays. Some functions have restrictions on multidimensional arrays. It is necessary to transform those rays into one-dimensional arrays.

## Data Types of NumPy

NumPy has some extra data types. We refer it to the data types with one character. However, we can use βiβ for the integers, βuβ for unsigned integers, and much more.

Here is the list of all the data types in NumPy and the characters used to represent them.

i – integer

b – boolean

u – unsigned integer

f – float

c – complex float

m – time delta

M – DateTime

O – object

S – string

U – Unicode string V – a fixed chunk of memory for another type ( void )

## Numpy Example in Python

```
import numpy as np
# First we create array object
arr = np.array( [[ 9, 8, 7],
[ 6, 5, 4]] )
# We Print the type of arr object
print("Array is of type: ", type(arr))
# We Print array dimensions (axes)
print("No. of dimensions: ", arr.ndim)
# We Print the shape of array
print("Shape of array: ", arr.shape)
# We Print the size (total number of elements) of array
print("Size of array: ", arr.size)
# We Print the type of elements in array
print("Array stores elements of type: ", arr.dtype)
```

## Output of the Code

```
Array is of type: <class 'numpy.ndarray'>
No. of dimensions: 2
Shape of array: (2, 3)
Size of array: 6
Array stores elements of type: int64
>
```