Sparse/Dense Matrix

SeongGyun Hong·2024년 10월 10일

1. Sparse Matrix

스파스 행렬이란 대부분의 값이 0인 행렬을 뜻하며
아래와 같이 표현될 수 있다.

(0, 1) 0.5
(0, 3) 0.8
(1, 2) 0.7
(2, 3) 0.6

여기서 위 값들이 의미하는 바는
(행, 열) 값
이며 대부분의 행, 열로 표기되지 않은 값들은 0이다.

2. Dense Matrix

밀집 행렬은 모든 값을 저장하는 행렬로써, Sparse 행렬을 Dense로 변환하면 다음과 같다.

[[0.0, 0.5, 0.0, 0.8],
 [0.0, 0.0, 0.7, 0.0],
 [0.0, 0.0, 0.0, 0.6]]

3. 구체적인 변환 코드 예시

Sparse 행렬을 Dense 행렬로 변환하는 예시 코드이다.

import numpy as np
from scipy.sparse import csr_matrix

# 스파스 행렬 생성
row = np.array([0, 0, 1, 2])
col = np.array([1, 3, 2, 3])
data = np.array([0.5, 0.8, 0.7, 0.6])
sparse_matrix = csr_matrix((data, (row, col)), shape=(3, 4))

print("Sparse Matrix:")
print(sparse_matrix)

# 밀집 행렬로 변환
dense_matrix = sparse_matrix.todense()

print("\nDense Matrix:")
print(dense_matrix)

출력 :

Sparse Matrix:
  (0, 1)    0.5
  (0, 3)    0.8
  (1, 2)    0.7
  (2, 3)    0.6

Dense Matrix:
[[0.  0.5 0.  0.8]
 [0.  0.  0.7 0. ]
 [0.  0.  0.  0.6]]
profile
헤매는 만큼 자기 땅이다.

0개의 댓글