A matrix is a two-dimensional data structure. In real-world tasks you often have to store rectangular data table. The table below shows the marks of three students in different subjects.
S.No |
Student Name |
Science |
English |
History |
Arts |
Maths |
---|---|---|---|---|---|---|
1 |
Roy |
80 |
75 |
85 |
90 |
95 |
2 |
John |
75 |
80 |
75 |
85 |
100 |
3 |
Dave |
80 |
80 |
80 |
90 |
95 |
Such tables are called matrices or two-dimensional arrays. In python any table can be represented as a list of lists (a list, where each element is in turn a list).
For example:
A = [['Roy',80,75,85,90,95],['John',75,80,75,85,100],['Dave',80,80,80,90,95]]
In the above example A represents a 3*6 matrix where 3 is number of rows and 6 is number of columns.
In python, matrix is a nested list. A list is created by placing all the items (elements) inside a square bracket [ ]
, separated by commas.
Here's a program that creates a numerical table with 3 rows and 6 columns.
# a is 2-D matrix with integers
a = [['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]]
#b is a nested list but not a matrix
b= [['Roy',80,75,85,90,95],
['John',75,80,75],
['Dave',80,80,80,90,95]]
In the above examples a is a matrix as well as nested list where as b is a nested list but not a matrix.
A possible way: you can create a matrix of n*m elements by first creating a list of n elements (say, of n zeros) and then make each of the elements a link to another one-dimensional list of m elements:
n = 3
m = 4
a = [0] * n
for i in range(n):
a[i] = [0] * m
print(a)
When you run the program, the output will be:
[[0 0 0 0], [0 0 0 0], [0 0 0 0]]
Another way to create a matrix is using numpy
library.
from numpy import *
x = range(16)
x = reshape(x,(4,4))
print(x)
When you run the program, the output will be
[[0 1 2 3], [4 5 6 7], [8 9 10 11], [12 13 14 15]]
There are various ways in which we can access elements of a python matrix.
Similar to list we can access elements of a matrix by using square brackets []
after the variable like a[row][col]
.
# a is 2-D matrix with integers
a = [['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]]
print(a[0])
print(a[0][1])
print(a[1][2])
When you run the program, the output will be:
['Roy', 80, 75, 85, 90, 95] 80 80
Here a is a matrix that contains name and marks of the students.
To see all the marks for the student Roy, we have accessed it by a[0]
where 0 is 1^{st} row of the matrix. This gives the output ['Roy',80,75,85,90,95]
.
Similarly, we can view only his marks in Science by accessing the position of it a[0][1]
where 0 is 1^{st} row and 1 is the 2^{nd} column of the matrix. This gives the output 80
.
If we wanted to view John's marks in English by accessing the position of it a[1][2]
where 1 is 2^{nd} row and 2 is the 3^{rd} column of the matrix. This gives the output 80
.
Python allows negative indexing for its sequences. The index of -1 refers to the last item, -2 to the second last item and so on.
a = [['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]]
print(a[-1])
print(a[-1][-2])
print(a[-2][-3])
When you run the above program, the output will be
['Dave', 80, 80, 80, 90, 95] 90 75
Here a is a matrix that contains name and marks of the students.
To see all the marks for the student Dave, we have accessed it by a[-1]
where -1 is last row of the matrix. This gives the output ['Dave', 80, 80, 80, 90, 95].
Similarly, we can view only his marks in Arts by accessing the position of it a[-1][-2]
where -1 is last row and -2 is the second last column of the matrix. This gives the output 90
.
If we wanted to view John's marks in History by accessing the position of it a[-2][-3]
where -2 is second last row and -3 is the third last column of the matrix. This gives the output 75
.
In the students matrix we store marks for different subjects of three students. Suppose we want to access marks of Science for all 3 students, here we will be using slicing to get the sub elements of the matrix. In python slicing is done using colon(:) with a syntax (start:end:increment) but for matrix we have to do it using numpy
library.
We use slicing to get specific sets of sub-elements from it, without any long, drawn out for
loops.
from numpy import *
a = array([['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]])
print(a[:3,[0,1]])
When we run the above program, the output will be
[['Roy',80], ['John',75], ['Dave',80]]
Here we have created the matrix a by using array()
method from numpy.
Since we have to access Roy's and John's Science marks with their names, we used a[:3,[0,1]]
where :3
is for firts three rows and [0,1]
is for the first two columns.
In python list are mutable, meaning, their elements can be changed unlike string or tuple.
We can use assignment operator (=) to change an item or a range of items.
a = [['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]]
b=a[0]
print(b)
b[1]=75
print(b)
a[2]=['Sam',82,79,88,97,99]
print(a)
a[0][4]=95
print(a)
When we run the above program, the output will be
b=['Roy',80,75,85,90,95] b=['Roy',75,75,85,90,95] a= [['Roy',75,75,85,90,95], ['John',75,80,75,85,100], ['Sam',82,79,88,97,99]] a=[['Roy',75,75,85,95,95], ['John',75,80,75,85,100], ['Sam',82,79,88,97,99]]
Here a is a matrix where we have stored name and marks of the students.
We have stored Roy's marks row in the variable b, by using it's row position from the matrix which is 0
so it becomes a[0]
.
To change Roy's marks in Science, by directly accessing that position where the marks is stored; as the position of that is a[0][1]
. So, in b it will be b[1]
.
We replaced Dave's row with a new student's marks Sam; we directly accessed the row position which is a[2]
of Dave's marks and replace it by Sam's marks .
Roy's marks in Arts was entered wrong, we accessed the position a[0][4]
where 0
is the first row and 4
is the fifth column of the matrix in which the data is stored and assigned a new value.
We can add one row to a matrix using append()
method and add a item using insert()
method by importing numpy
library.
Now we will be adding a new row in the students table or matrix which contains a new student's marks.
from numpy import *
a = array([['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]])
a= append(a,[['Sam',82,79,88,97,99]],0)
//here 0 is axis that represents the dimensions where 0 stands for row and 1 stands for column
print(a)
When we run the above program, the output will be
[['Roy',80,75,85,90,95], ['John',75,80,75,85,100], ['Dave',80,80,80,90,95], ['Sam',82,79,88,97,99]]
Here we have created the matrix a using array()
method from numpy
library.
We are using append()
method from numpy
to add a row in the matrix where a is the matrix, ['Sam',82,79,88,97,99]
is the new row and 0
is the axis that represents the row.
from numpy import *
a = array([['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]])
a= insert(a,[6],[[73],[80],[85]],axis=1)
//here axis represents the dimensions where 0 stands for row and 1 stands for column
print(a)
When we run the above program, the output will be
[['Roy',80,75,85,90,95,73], ['John',80,75,80,75,85,100,80], ['Dave',85,80,80,80,90,95,85]]
Here we have created the matrix a using array()
method from numpy
library.
We are using insert()
method from numpy
to add a column in the matrix where a is the matrix, [6]
is the column where we have to insert the values, [[73],[80],[85]]
is the new column and 1 is the axis that represents the column.
We can also use + operator to combine two different lists. This is also called concatenation.
a=[['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]]
a= a+ [['Sam',82,79,88,97,99]]
print(a)
When we run the above program, the output will be
[['Roy',80,75,85,90,95], ['John',75,80,75,85,100], ['Dave',80,80,80,90,95], ['Sam',82,79,88,97,99]]
Here a is a matrix where we have stored name and marks of the students.
We have inserted a new row using +
at the end of the matrix.
We can delete an entire row of items from a matrix using the method
delete from numpy
library.
from numpy import *
a = array([['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]])
a= delete(a,[1],0)
print(a)
When we run the above program, the output will be
[['Roy',80,75,85,90,95], ['Dave',80,80,80,90,95]]
Here we have created the matrix a using array()
method from numpy
library.
We are using delete()
method from numpy
to delete a row in the matrix where a is the matrix, [1]
is the second row and 0
is the axis that represents the row.
from numpy import *
a = array([['Roy',80,75,85,90,95],
['John',75,80,75,85,100],
['Dave',80,80,80,90,95]])
a= delete(a, s_[1::2], 1)
print(a)
When we run the above program, the output will be
[['Roy' ,75, 90], ['John', 80, 85], ['Dave', 80, 90]]
Here we have created the matrix a using array()
method from numpy
library.
We are using delete()
method from numpy
to delete a column in the matrix where a is the matrix, s_[1::2]
are the columns second, third and fourth to be deleted and 1
is the axis that represents the column.
It takes a lot of effort and cost to maintain Programiz. We would be grateful if you support us by either:
Disabling AdBlock on Programiz. We do not use intrusive ads.
or
Donate on Paypal