What is Python NumPy Library?
In this first tutorial, we will cover a basic introduction to Python Numpy Library.
Numpy is a shorthand form of "Numeric Python" or "Numerical Python" and it is pronounced as (Numpee).

NumPy is an opensource library in Python that provides support in mathematical, scientific, engineering, and data science programming.

To perform large mathematical operations and statistical operations Numpy is an incredible library.

Numpy is basically a simple programming language that works superbly well for the multidimensional arrays and matrices multiplication.

In 2005, Numpy was created by Travis Oliphant and as it is opensource so anyone can access it freely.

Numpy is a great tool for any scientific project and it also contains a powerful ndimensional array object.
NumPy Library is written partially in Python and the parts of NumPy that require fast computation are written in C or C++.
Where is Numpy used?
Below we have some usecases where NumPy is effective to use:

Numpy is very useful in performing operations that are related to linear algebra and for its handling of random numbers.

NumPy can efficiently implement multidimensional array objects (that are in the form of rows and columns).

Numpy works efficiently with reshaping of matrices, random numbers, and Fourier transforms, etc.

Numpy was designed for scientific computation.

One thing is important to note here that TensorFlow and Scikit learn also uses NumPy array to compute the matrix multiplication in their back end
Why to use Numpy in Python?
Because, in Python, Lists are used in order to serve the purpose of the array but lists are very slow to process. Hence we use Numpy in Python because it provides an array object that is up to 50x faster than traditional Python lists. And Python has other modules too, which makes data analysis and presentation very easy. So Numpy library is used with Python along with other Python libraries like Matplotlib, Scikit Learn, etc for AI/ML and Data analysis purposes.

In NumPy, the array object is commonly known as
ndarray
. Numpy provides a lot of supporting functions for performing operations on its array object and with these functions, working withndarray
becomes very easy. 
Also, the NumPy arrays are more compact than Python Lists in terms of the size.

NumPy uses much less memory in order to store data and it provides an easy mechanism of specifying the data types. Thus code can be optimized easily.
Now you must be thinking, that how NumPy works faster than lists. Don't worry, we have an answer for your question.
NumPy arrays are mainly stored at one continuous place in memory contrary to lists. Thus you can access and manipulate them very efficiently and this behavior is commonly known as locality of reference. Due to this reason, Numpy is faster than lists. Numpy is optimized to work with latest CPU architecture.
Like we mentioned above, NumPy is also used along with packages like SciPy (Scientific Python) and Matplotlib (plotting library in python).
This combination is mainly a replacement for MatLab(which is a popular platform for technical computing). Also, Python is an alternative to MatLab and is now seen as a modern and complete programming language.