# A sparse matrix is a matrix in which the majority of elements are zero.
# To compact a sparse matrix, use a method to store only the non‑zero
# entries using a triplet representation (row, column, value).
# This reduces memory usage.
# Convert a sparse matrix into compact (triplet) form
def compactMatrix(matrix):
rows = len(matrix)
cols = len(matrix[0])
# Count non-zero elements
count = sum(
1
for i in range(rows)
for j in range(cols)
if matrix[i][j] != 0
)
# Compact matrix has 3 rows: row index, col index, value
compact = [
[0] * count,
[0] * count,
[0] * count
]
k = 0
# Fill compact matrix
for i in range(rows):
for j in range(cols):
if matrix[i][j] != 0:
compact[0][k] = i # row
compact[1][k] = j # column
compact[2][k] = matrix[i][j] # value
k += 1
return compact
matrix = [
[0, 0, 3, 0, 8, 0, 0, 0, 0],
[0, 0, 5, 7, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 2, 6, 0, 0, 4, 0, 0, 0],
[0, 0, 0, 0, 9, 0, 0, 0, 0]
]
compact = compactMatrix(matrix)
print("Compact matrix:")
for i in range(3):
for j in range(len(compact[0])):
print(compact[i][j], end=" ")
print()
"""
run:
Compact matrix:
0 0 1 1 1 3 3 3 4
2 4 2 3 6 1 2 5 4
3 8 5 7 1 2 6 4 9
"""