Open-Source Internship opportunity by OpenGenus for programmers. Apply now.
Array is a linear data structure consisting of list of elements. In this we are specifically going to talk about 2D arrays. 2D Array can be defined as array of an array. 2D array are also called as Matrices which can be represented as collection of rows and columns.
In this article, we have explored 2D array in Numpy in Python.
Numpy is a library in Python adding support for large multidimensional arrays and matrices along with high level mathematical functions to operate these arrays.
Benefits of Numpy :
- Numpy are very fast as compared to traditional lists because they use fixed datatype and contiguous memory allocation.
- Numpy has lot more functions.
Installing NumPy in windows using CMD
pip install numpy
The above line of command will install NumPy into your machine.
Basics of NumPy
For working with numpy we need to first import it into python code base.
import numpy as np
Creating an Array
Syntax -
arr = np.array([2,4,6], dtype='int32')
print(arr)
[2 4 6]
In above code we used dtype parameter to specify the datatype
To create a 2D array and syntax for the same is given below -
arr = np.array([[1,2,3],[4,5,6]])
print(arr)
[[1 2 3]
[4 5 6]]
Various functions on Array
Get shape of an array
arr.shape
(2, 3)
Get Datatype of elements in array
arr.dtype
dtype('int64')
Accessing/Indexing specific element
To get a specific element from an array use arr[r,c]
here r
specifies row number and c
column number.
arr[1,1]
5
To get all elements of Row or Column
:
is used to specify that we need to fetch every element.
arr[1,:]
#This will return all elements of 1st row in the form of array
array([4, 5, 6])
Accessing multiple rows and columns at a time
arr = np.ones((4,4))
t = arr[1:3,1:3]
print(t)
# t will be a 2x2 matrix with 4 elements
[[1. 1.]
[1. 1.]]
Initializing different types of an array
There are various built-in functions used to initialize an array
Zeros Array
zeros((r,c))
- It will return an array with all elements zeros with r
number of rows and c
number of columns.
arr_zeros = np.zeros((3,5))
print(arr_zeros)
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
Ones Array
Similar to zeros we can also have all elements as one by using ones((r,c))
arr_ones = 2*np.ones((3,5))
print(arr_ones)
[[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]]
Random Array
random.rand(r,c)
- this function will generate an array with all random elements.
arr_rand = np.random.rand(3,4)
print(arr_rand)
[[0.12684248 0.42387592 0.0045715 0.34712039]
[0.3431914 0.51187226 0.59134866 0.64013614]
[0.91716382 0.35066058 0.51826331 0.9705538 ]]
Identity
identity(r)
will return an identity matrix of r
row and r
columns.
arr_i = np.identity(3)
print(arr_i)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Operations on 2D array
Arithmetic Operations
Applying scalar operations to an array.
a = np.array([[1,2,3],[4,6,2],[0,7,1]]) #array with size 3x3
#Scalar operation - It will operate with scalar to each element of an array
print(a+2)
print(a-4)
print(a*3)
print(a/2)
print(a**2)
[[3 4 5]
[6 8 4]
[2 9 3]]
[[-3 -2 -1]
[ 0 2 -2]
[-4 3 -3]]
[[ 3 6 9]
[12 18 6]
[ 0 21 3]]
[[0.5 1. 1.5]
[2. 3. 1. ]
[0. 3.5 0.5]]
[[ 1 4 9]
[16 36 4]
[ 0 49 1]]
Matrix operation for 2D matrix
a = np.array([[1,2,3],[4,6,2],[0,7,1]]) #array with size 3x3
b = np.array([[3,6],[1,4],[7,2]]) #array with size 3x2
c = np.array([[1,0,3],[2,3,1],[0,0,1]])
add = a+c
mul = np.matmul(a,b) #Matrix multiplication of a and b
print(add)
print(mul)
[[2 2 6]
[6 9 3]
[0 7 2]]
[[26 20]
[32 52]
[14 30]]
Finding Minimum and Maximum from all elements
np.min(b)
1
np.max(b)
7
Finding determinant of a Matrix
np.linag.det(a)
68.00000000000001
Sum of elements along the column and row
#To add all elements of a column
np.sum(b,axis=0)
array([11, 12])
#To add all elements of a row
np.sum(b,axis=1)
array([9, 5, 9])
Reorganizing Array
Changing shape of an array
before = np.array([[1,2,3,4],[5,6,7,8]]) #it's dimensions are 2x4
after = before.reshape(4,2) #it's dimensions are 4x2
print(after)
[[1 2]
[3 4]
[5 6]
[7 8]]
Horizontal Stacking - Concatinating 2 arrays in horizontal manner
a = np.identity(2)
b = np.array([[1,2],[2,1]])
np.hstack((a,b))
array([[1., 0., 1., 2.],
[0., 1., 2., 1.]])
Vertical Stacking - Concatinating 2 arrays in vertical manner
a = np.identity(2)
b = np.array([[1,2],[2,1]])
np.vstack((a,b))
array([[1., 0.],
[0., 1.],
[1., 2.],
[2., 1.]])