NumPy
NumPy
NumPy is an open source Python library that’s used in almost every field
of science and engineering. It’s the universal standard for working with
numerical data in Python, and it’s at the core of the scientific Python and
PyData ecosystems. NumPy users include everyone from beginning coders to
experienced researchers doing state-of-the-art scientific and industrial
research and development.
Importance of NumPy
With the revolution of data science, data analysis libraries like NumPy, SciPy,
Pandas, etc. have seen a lot of growth. With a much easier syntax than
other programming languages, python is the first choice language for the
data scientist.
Arrays are very frequently used in data science, where speed and resources
are very important.
This is the main reason why NumPy is faster than lists. Also it is optimized to
work with latest CPU architectures.
Installation of NumPy
If you have Python and PIP already installed on a system, then installation of
NumPy is very easy.
Note: PIP is a package manager for Python packages, or modules if you like
Import NumPy
import numpy
Navigate your command line to the location of Python's script directory, and
type the following:
Example:
C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\
Scripts>pip --version
Install PIP
If you do not have PIP installed, you can download and install it from this
page: https://pypi.org/project/pip/
Array
Example 1:
import numpy
ar = numpy.array([1, 2, 3, 4, 5])
print(ar)
Output:
[1 2 3 4 5]
Example 2:
import numpy as np
ar = np.array([1, 2, 3, 4, 5])
print(ar)
print(type(ar))
Output:
[1 2 3 4 5]
<class 'numpy.ndarray'>
Example 3:
# we can pass a list, tuple or any array-like object into the array() method,
and it will be converted into an ndarray(N-dimensional array)
import numpy as np
ar1=np.array((1, 2, 3, 4, 5))
ar2=np.array([11,22,33,44,55])
print(ar1)
print(ar2)
Output:
[1 2 3 4 5]
[11 22 33 44 55]
import numpy as np
print(np.__version__)
Output:
1.19.5
Dimensions in Arrays
0-D arrays, or Scalars, are the elements in an array. Each value in an array is
a 0-D array.
Example:
import numpy as np
arr = np.array(10)
print(arr)
Output:
10
An array that has 0-D arrays as its elements is called uni-dimensional or 1-D
array.
Example:
import numpy as np
print(arr)
Output:
[10 20 30 40 50]
An array that has 1-D arrays as its elements is called a 2-D array.
Example:
import numpy as np
Output:
[[10 20 30]
[40 50 60]]
An array that has 2-D arrays (matrices) as its elements is called 3-D array.
OR
Example:
import numpy as np
ar = np.array([[[10, 20, 30], [40, 50, 60]], [[11, 22, 33], [44, 55, 66]]])
print(ar)
Output:
[[[10 20 30]
[40 50 60]]
[[11 22 33]
[44 55 66]]]
NumPy Arrays provides the ndim attribute that returns an integer that tells
us how many dimensions the array have.
Example:
import numpy as np
a = np.array(42)
d = np.array([[[10, 20, 30], [40, 50, 60]], [[11, 22, 33], [44, 55, 66]]])
Output:
Dimesion of Array= 0
Dimesion of Array= 1
Dimesion of Array= 2
Dimesion of Array= 3
After creating array with different elements, we can access any element from
the array. Elements of elements can be accessed in different way.
Example 1:
print(arr[1])
Output:
20
Example 2:
import numpy as np
print(arr[0, 2])
Output:
30
Example 3:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr[0, 1, 2])
Output:
shape()
Example:
import numpy as np
print(ar.shape)
Output:
(2, 3)
reshape()
This method is used to give a new shape to array. With this method we can
divide array elements into different rows and columns. The point which is to
be noted here is that data in the array will not be changed, it will be
restructured.
Note: While using the reshape method, the array you want to produce needs
to have the same number of elements as the original array.
Example 1:
# Can create array using arrange where elements are added in array in
countinuity
import numpy as np
a = np.arange(10)
print(a)
Output:
[0 1 2 3 4 5 6 7 8 9]
Example 2:
import numpy as np
a = np.arange(6)
b = a.reshape(3, 2)
print(b)
Output:
[[0 1]
[2 3]
[4 5]]
Example 3:
import numpy as np
a = np.arange(10)
b = a.reshape(3, 2)
print(b)
Output:
Error
Example 4:
#Converting 2D into 1D Array
import numpy as np
ar1 = np.array([[10, 20, 30], [40, 50, 60]])
print("Original array \n",ar1)
ar2=ar1.reshape(-1)
print("\n New Array\n",ar2)
Output:
Original array
[[10 20 30]
[40 50 60]]
New Array[10 20 30 40 50 60]
Example 5:
import numpy as np
ar1 = np.array([10,20,30,40,50,60,70,80,90,100,110,120])
ar2=ar1.reshape(2,2,3)
Output:
Original array
[[[ 10 20 30]
[ 40 50 60]]
[[ 70 80 90]
Example 1:
import numpy as np
ar1 = np.array([1,2,3])
ar2 = np.array([4,5,6])
ar3=ar1+ar2
print(ar3)
Output:
[5 7 9]
Example 2:
import numpy as np
ar1 = np.array([1,2,3])
ar2 = np.array([4,5,6])
ar3=ar1-ar2
print(ar3)
Output:
[-3 -3 -3]
Example 3:
import numpy as np
ar1 = np.array([1,2,3])
ar2 = np.array([4,5,6])
ar3=ar1*ar2
print(ar3)
Output:
[4 10 18]
Example 4:
import numpy as np
ar1 = np.array([6,2,8])
ar2 = np.array([2,1,4])
ar3=ar1/ar2
print(ar3)
Output:
[3. 2. 2.]
Example 5:
import numpy as np
ar1 = np.array([6,2,8,12])
ar2 = np.array([2,1,4])
ar3=ar1+ar2
print(ar3)
Output:
Error
Example 6:
import numpy as np
ar1 = np.array([1,2,3,4,5])
ar1 = ar1+10
print(ar1)
Output:
[11 12 13 14 15]
Example 7:
import numpy as np
ar=np.array([1,2,3,4,5])
print(np.power(ar, 2))
Output:
[ 1 4 9 16 25]
Example 8:
import numpy as np
ar=np.array([1.6,2.3,3.3,4.8,5.2])
print(np.floor(ar))
print(np.ceil(ar))
print(np.round(ar))
Output:
[1. 2. 3. 4. 5.]
[2. 3. 4. 5. 6.]
[2. 2. 3. 5. 5.]
Example 9:
import numpy as np
ar=np.array([1,2,3,4,5])
print(ar**2)
Output:
[ 1 4 9 16 25]
Comparison Operations
Example 1:
import numpy as np
a = np.array([3, 8, 3, 4])
b = np.array([4, 8, 4, 4])
print(a==b)
Output:
Example 2:
import numpy as np
a = np.array([3, 8, 3, 4])
b = np.array([4, 2, 4, 1])
print(a>b)
Output:
Logical Operations
NumPy array also supports all the logical operators that allow you to
easily compare the array element.
Example:
import numpy as np
ar=np.array([1,2,3,4,5])
print(ar)
Output:
[1 2 3 4 5]
Aggregate functions
Numpy has fast built-in aggregate and statistical for working on arrays.
Example 1:
import numpy as np
ar=np.array([1,2,3,4,5,5,4,3,2,1])
print(ar)
Output:
[1 2 3 4 5 5 4 3 2 1]
Sum of elements= 30
Minimum element= 1
Maximum element= 5
Slicing arrays
Slicing in python means taking elements from one given index to another
given index.
Example 1:
import numpy as np
ar = np.array([1, 2, 3, 4, 5])
print(ar[0:5])
print(ar[2:5])
print(ar[0:])
print(ar[:5])
print(ar[-4:-1])
print(ar[0:5:2])
Output:
[1 2 3 4 5]
[3 4 5]
[1 2 3 4 5]
[1 2 3 4 5]
[2 3 4]
[1 3 5]
Example 2:
import numpy as np
print(arr[0, 1:4])
print(arr[1, 2:5])
print("\n")
Output:
[2 3 4]
[ 8 9 10]
Example 3:
import numpy as np
import numpy as np
ar = np.array([[[10, 20, 30], [40, 50, 60]], [[11, 22, 33], [44, 55, 66]]])
print(ar)
print("\n\n")
print("\n",ar[0,0,1:2])
print("\n",ar[1,0,1:3])
Output:
[[[10 20 30]
[40 50 60]]
[[11 22 33]
[44 55 66]]]
[20]
[22 33]
append()
Syntax:
where,
import numpy as np
new_arr = np.append(arr, 4)
Output:
Original array: [1 2 3]
Example 2:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
ar = np.append(ar, [row],axis=0)
print(ar)
Output:
[[1 2 3 4 5]
[5 4 3 2 1]
[6 7 8 9 1]]
Example 3:
import numpy as np
ar = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(ar);
Output:
[[1 2 3]
[4 5 6]
[7 8 9]]
[[ 1 2 3 10]
[ 4 5 6 11]
[ 7 8 9 12]]
insert() method
Now, to Add a Row to a NumPy Array we need to pass the array, index, row
to be inserted to the insert() method. Here we are adding row at front of the
array so let’s give index = 0.
Syntax of insert()
where,
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
print(ar)
Output:
[[ 2 4 6 8 1]
[ 1 2 3 4 5]
[ 6 7 8 9 10]]
Example 2:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
print(ar)
Output:
[[ 1 2 3 4 5 2]
[ 6 7 8 9 10 4]]
Syntax:
numpy.vstack(tuple)
where,
Example:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
row = np.array([6,7,8,9,1])
ar = np.vstack((ar,row))
print(ar)
Output:
[[1 2 3 4 5]
[5 4 3 2 1]
[6 7 8 9 1]]
Example 2:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
col = np.array([[66],[55]])
ar = np.hstack((ar,col))
print(ar)
Output:
[[ 1 2 3 4 5 66]
[ 5 4 3 2 1 55]]
Array Manipulation
Example:
import numpy as np
a = np.arange(6)
b = a.reshape(3, 2)
print(b)
Output:
[[0 1]
[2 3]
[4 5]]
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
print(ar)
print("\n")
print(ar.flat[6])
Output:
[[1 2 3 4 5]
[5 4 3 2 1]]
Example:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
print(ar)
print("\n")
Output:
[[1 2 3 4 5]
[5 4 3 2 1]]
[1 5 2 4 3 3 4 2 5 1]
Note:
Example:
import numpy as np
ar = np.array([[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]])
print(ar)
print("\n")
print(ar.ravel())
Output:
[[1 2 3 4 5]
[5 4 3 2 1]]
The flattened array is:
[1 2 3 4 5 5 4 3 2 1]
Flatten Vs Ravel
Example:
import numpy as np
ar = np.array([[1, 2],
[3, 4]])
print(ar)
print("\n")
print(ar.transpose())
Output:
[[1 2]
[3 4]]
[[1 3]
[2 4]]
concatenate()- this method is used to concatenate 2 arrays.
Example:
import numpy as np
ar1 = np.array([[1,2],[3,4]])
print("First array:")
print(ar1)
print("\n")
ar2 = np.array([[5,6],[7,8]])
print("Second array:")
print(ar2)
print("\n")
print(np.concatenate((ar1,ar2),axis=0))
print("\n")
print(np.concatenate((ar1,ar2),axis = 1))
Output:
First array:
[[1 2]
[3 4]]
Second array:
[[5 6]
[7 8]]
[3 4]
[5 6]
[7 8]]
[[1 2 5 6]
[3 4 7 8]]
numpy.stack(arrays, axis)
where,
axis in the resultant array along which the input arrays are stacked
Example:
import numpy as np
ar1 = np.array([[1,2],[3,4]])
print("First Array:")
print(ar1)
print("\n")
ar2 = np.array([[5,6],[7,8]])
print("Second Array:")
print(ar2)
print("\n")
print(np.stack((ar1,ar2),0))
print("\n")
print("Stack the two arrays along axis 1:' ")
print(np.stack((ar1,ar2),1))
Output:
First Array:
[[1 2]
[3 4]]
Second Array:
[[5 6]
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
[[[1 2]
[5 6]]
[[3 4]
[7 8]]]
Example:
import numpy as np
ar1 = np.array([[1,2],[3,4]])
print("First Array:")
print(ar1)
print("\n")
ar2 = np.array([[5,6],[7,8]])
print("Second Array:")
print(ar2)
print("\n")
print("Horizontal stacking:")
ar3 = np.hstack((ar1,ar2))
print(ar3)
print("\n")
print("Vertical stacking:")
ar3 = np.vstack((ar1,ar2))
print(ar3)
Output:
First Array:
[[1 2]
[3 4]]
Second Array:
[[5 6]
[7 8]]
Horizontal stacking:
[[1 2 5 6]
[3 4 7 8]]
Vertical stacking:
[[1 2]
[3 4]
[5 6]
[7 8]]
Example:
import numpy as np
ar = np.arange(12)
print(ar)
print("\n")
ar2 = np.split(ar,2)
print(ar2)
print("\n")
ar3 = np.split(ar,3)
print(ar3)
print("\n")
ar4 = np.split(ar,[4,7])
print(ar4)
Output:
Original Array:
[ 0 1 2 3 4 5 6 7 8 9 10 11]
hsplit() and vsplit(): these methods are used to split array in horizontal
and vertical manner.
Example:
import numpy as np
ar = np.array([[1,2],[3,4]])
print("Original Array")
print(ar)
print("\n")
print("Horizontal splitting:")
ar2 = np.hsplit(ar,2)
print(ar2)
print("\n")
print("Vertical splitting:")
ar2 = np.vsplit(ar,2)
print(ar2)
Output:
Original Array
[[1 2]
[3 4]]
Horizontal splitting:
[array([[1],
[3]]), array([[2],
[4]])]
Vertical splitting:
Example:
import numpy as np
a = np.arange(12).reshape(3,4)
print("First array:")
print(a)
print("\n")
print(np.delete(a,5))
print("\n")
print(a)
print("\n\nRow 2 deleted:")
print(np.delete(a,1,axis=0))
print("\n")
print("\nColumn 2 deleted:")
print(np.delete(a,1,axis=1))
Output:
First array:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[ 0 1 2 3 4 6 7 8 9 10 11]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
Row 2 deleted:
[[ 0 1 2 3]
[ 8 9 10 11]]
Column 2 deleted:
[[ 0 2 3]
[ 4 6 7]
[ 8 10 11]]
Example:
import numpy as np
ar = np.array([1,1,2,2,3,3,4,4,5,5,6,6,7,7])
print("Array:")
print(ar)
print("\n")
unik = np.unique(ar)
print(unik)
Output:
Array:
[1 1 2 2 3 3 4 4 5 5 6 6 7 7]
[1 2 3 4 5 6 7]