Given a matrix with most of its elements as 0, we need to convert this matrix into a sparse matrix in Python.
Example:
Input: Matrix:
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
5 0 0 0Output: Sparse Matrix:
0 0 1
1 1 2
2 2 3
3 3 4
4 0 5Explanation:
Here the Matrix is represented using a 2D list and the Sparse Matrix is represented in the form Row Column ValueIn the Sparse Matrix the first row is
0 1 1
indicates that the value of the Matrix at row 0 and column 1 is 1.
Approach:
- Create an empty list which will represent the sparse matrix list.
- Iterate through the 2D matrix to find non zero elements.
- If an element is non zero, create a temporary empty list.
- Append the row value, column value, and the non zero element itself into the temporary list.
- Now append the temporary list into the sparse matrix list such that the temporary list acts as a sub-list of the sparse matrix list.
- After getting all the non zero elements from the matrix, display the sparse matrix.
The above approach has been used in convertToSparseMatrix()
function in the below program:
# Python program to convert a # matrix to sparse matrix # function display a matrix def displayMatrix(matrix): for row in matrix: for element in row: print (element, end = " " ) print () # function to convert the matrix # into a sparse matrix def convertToSparseMatrix(matrix): # creating an empty sparse # matrix list sparseMatrix = [] # searching values greater # than zero for i in range ( len (matrix)): for j in range ( len (matrix[ 0 ])): if matrix[i][j] ! = 0 : # creating a temporary # sublist temp = [] # appending row value, column # value and element into the # sublist temp.append(i) temp.append(j) temp.append(matrix[i][j]) # appending the sublist into # the sparse matrix list sparseMatrix.append(temp) # displaying the sparse matrix print ( "\nSparse Matrix: " ) displayMatrix(sparseMatrix) # Driver's code # initializing a normal matrix normalMatrix = [[ 1 , 0 , 0 , 0 ], [ 0 , 2 , 0 , 0 ], [ 0 , 0 , 3 , 0 ], [ 0 , 0 , 0 , 4 ], [ 5 , 0 , 0 , 0 ]] # displaying the matrix displayMatrix(normalMatrix) # converting the matrix to sparse # displayMatrix convertToSparseMatrix(normalMatrix) |
Output:
0 1 0 0 0 0 2 0 0 3 0 0 0 0 5 0 0 0 0 4 Sparse Matrix: 0 0 1 1 1 2 2 2 3 3 3 4 4 0 5