so now we are going to discuss numpy, numpy stands for numerical python so it is one of the most popular libraries in data science this library is fundamental building blocks for so many other libraries including pandas spark machine learning tensorflow so you will find its like a lego, block lego block like small small blocks they help us in creating bigger structures same thing numpy is at the core of these libraries including tensorflow spark machine learning and as i just mentioned pandas so these libraries are actually built on numpy so when you work with these libraries you will see numpy exceptions are coming and these exceptions will have a stack trace and through that you can actually understand like there is like a dependency on numpy so thats why it is so much important and this numpy is actually written in c and python its highly optimized library and what was happening basically why this library was created vanilla python when we were discussing vanilla python in our python course i mentioned so many data types in python i mentioned about list data type i mentioned about set i mentioned about couple and frozen set and there were a lot of other data types that were that we discussed now this list data type is there in vanilla python or python core so when python started it was not having any support for array so this list is the closest match if you see to the array structure but there is a difference between list and array so list can contain heterogeneous types of elements but array can have only one single type which is like integer or maybe you want to have some float values so we want like the structure should be very much efficient for numerical computation so numpy introduced data type which is numpy array numpy array and this numpy array is very much efficient compared to list so the reason for introducing numpy from vanilla python was first reason to introduce numpy array instead of using vanilla python list data type is the performance so this numpy array they are having much better performance compared to python list they are actually having a process of vectorization so numpy array read process and store data in bulk that is basically like a vectorization process so reading writing bulk of data together and then processing that data as a whole is called vectorization process so the first reason is like so numpy array are having much faster performance compared to vanilla python list second reason is convenience so we dont have to write for loops or nested loops like the way we have to write in case of python core we dont have to do that we can actually make use of very convenient methods provided by numpy library and we will see those examples coming up just after this theory i am going to show you how numpy actually works in a jupyter notebook so we are going to discuss that so these two reasons primarily we moved from vanilla python list data type to numpy array and it happened around 2005 2006 during that time frame this library started to evolve as an independent project on its own right so that that that is the time period and after that a lot of other libraries in machine learning and deep learning started to depend on this lego block or the foundational block of so many other libraries you will find matrix multiplication is very common in so many domains for example if you are doing face recognition so in phase recognition when you are identifying a person again there is some kind of matrix multiplication going on each pixel is having rgb value and we are using tensors to process our data so when we talk about those computer vision convolution neural network then also you will find these things are going on internally the matrix multiplications going on internally so thats why numpy is one of the important libraries that we need to understand and get some hands-on exposure so that when you are working with pandas or youre working with tensorflow or youre applying this in so many other areas like statistics then also you will see numpy plays a significant role there right so lets get started and lets see like um how um numpy helps us in solving real world problems