
This is the continuation of series of blog post on getting started to data science using python . So today will explore the building blocks of python with special emphasis on numpy .
Most frequently used python library for data science community . Why it is being used so extensively , we will find it in this blog post .
Numpy stands for ‘Numeric Python’ , it is the core library in python to do the scientific computing . It is the container of tools and technique to compute mathematical model of science .
Multidimensional array object is one of the powerful data structure for computation of arrays and matrices .
Enough of the theory lets dig deeper .
If you are following us for a while you might have already installed ananaconda which comes pre-loaded with numpy !!

A numpy array comes with 2 important state variables. Just like Python, it automatically detects dtype (if not mentioned)
- dtype
- shape
Lets look into an example :

Initialization of NumPy via arrange()

Initialization with Zeros and 2d array
Numpy stores matrix in a row major format i.e the entire row will be stored first and then the second row will be stored .

Similarly you can have it for ones too :

More on Example :

In other words, you see that the result of x-y gives the shape of (3,4): y had a shape of (4,) and x had a shape of (3,4). The resulting array is formed from the maximum size of the array .
Initialization with Random Values
numpy.random.random(size=None,)
numpy.random.randint(low, high, size=None, dtype='I') : The value of matrix lies between low and high
numpy.random.randn(d0,d1,⋯,dnd0,d1,⋯,dn)

Slicing and index in Numpy :
This is a very important concept in numpy while we can used it for a variety of usage . This operation is very similar to list operation where you can index and slice using square [ ] .
Just like list, numpy also has 0 indexing. Let us see some of the commonly used slicing techniques .
- Generic Slicing Operation : [start]:[end]:[jump]
- Only jump ::2
- Only end :5/li>
- Start and jump 2::-1
- End and Jump :5:2
- Start, end and jump 2:7:3



Solving Mathematical problems using numpy :
Numpy has a wide range of function to do mathematical operations :
np.add(), np.subtract(), np.multiply(), np.divide() and np.remainder().

Broadcasting in numpy :
It is a way to broadcast data of lower or same dimension onto another ndarray. It is similar to map operation in python.


Matrix Operation :
One of the very important operation to look out for as its being extensively used for image processing , vector calculation and a lot more :
- Inner Product
- Vector Vector
- Matrix Vector
- Matrix Matrix
- Outer product
Inner Product
In terms of Inner Product or Dot product, will be be nothing but sum of element wise product.
So, the dot product between vector v=[1,2,3]v=[1,2,3] and w=[2,4,6]w=[2,4,6] will be
1∗2+2∗4+3∗6
2+8+18
28
The outer product work as inverted L :
Lets look at few example :



Statistical Function in Numpy :
- np.mean(data,axis=0)
- np.var(data,axis=0)
- np.sum(data,axis=0)
- np.max(data,axis=0)
- np.min(data,axis=0)
- np.percentile(data, percentage,axis=0)
- np.std(data,axis=0)


Reshape and resizing of matrix :
Resizing of array is done to make combability of two operations so that the array are of same dimensions or different dimensions the element here gets changed .

Reshaping in array :
Besides resizing, you can also reshape your array, you give a new shape to an array without changing its data. Only key of reshaping is keep the size of the new array unchanged .


Transpose Operation :
numpy.transpose(a, axes=None)
This function reverses the axes for 2D array.
For multidimensional array, it permutes the matrix according to the axis argument.

This are some of the main function of NumPy , you can even use it for doing small visualization task .
There are lot can be done with numpy , will explore more of it in explanatory data analysis .
Stay tuned and happy learning !!