# Numpy - Part 1

💡**Why Numpy ? **

     1️⃣ Numerical Operations are faster than normal python lists

     2️⃣ Also known as Array Oriented Computing

     3️⃣ Unlike lists, Numpy Array elements should be of same data type

     4️⃣ package for creating Multi-Dimension Arrays

**some info on Arrays**

18  is a Scalar (there is no dimension, so no Shape)

 1️⃣ D Array = Vector (collection of scalars)
    [1, 2, 3, 4, 5]

  It has 1 axes i.e., axis = 0

  Shape is (N, ) - N is no. of scalars

  here, Shape is (5, )

  2️⃣ D Array = Matrix  (collection of Vectors)
   [[1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]]

   It has 2 axes i.e., axis=0, axis=1

   Shape is (N,  M) - N is no. of vectors, M is no of scalars in each vector

   here, Shape is (2, 5)

3️⃣ D Array  (collection of Matrix's) 

[[[1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]],
 [[11, 12, 13, 14, 15],  
  [16, 17, 18, 19, 20]]]

anything more than 2D array can be called Tensor


Shape is (N, M, P) - N number of Matrices each of shape (M, P)

here, Shape is (2, 3, 5)

💡** How to Create an Array ?**

 - 3 ways

import numpy as np

➖ np.array(your_list)
      your list or nested list to create 1D/higher dimension          
      arrays

➖ np.arange(5) - creates 1D Array
      read it as `a` range (range() in python)

➖ np.random.rand(5)

💡 **Understand our Array**

a = np.array([1,2,3,4])

→ a.dtype  # data type is dtype('int64')
→ a.dim      # dimension is 1
→ a.shape  # shape is (4, )
→ a.size      # total number of elements

If you like the content, you could follow on twitter [@nameismahipal](https://twitter.com/nameismahipal)
