[파이썬][Scipy] 희소 배열 (Sparse Arrays) 예제
Scipy에서 희소 배열 (Sparse Arrays)를 다루려면 scipy.sparse
모듈을 사용합니다. 희소 배열은 대부분의 원소가 0인 경우에 사용되며, 메모리 효율적으로 데이터를 저장하고 처리할 수 있습니다. 아래는 몇 가지 희소 배열 예제입니다.
-
CSR 희소 행렬 예제:
Compressed Sparse Row (CSR) 포맷을 사용하여 희소 행렬을 생성하는 예제입니다.
from scipy.sparse import csr_matrix
import numpy as np
# 밀집 배열로부터 CSR 희소 행렬 생성
dense_array = np.array([[1, 0, 0], [0, 0, 2], [0, 3, 0]])
sparse_csr = csr_matrix(dense_array)
print("CSR 희소 행렬:")
print(sparse_csr)
-
CSC 희소 행렬 예제:
Compressed Sparse Column (CSC) 포맷을 사용하여 희소 행렬을 생성하는 예제입니다.
from scipy.sparse import csc_matrix
import numpy as np
# 밀집 배열로부터 CSC 희소 행렬 생성
dense_array = np.array([[1, 0, 0], [0, 0, 2], [0, 3, 0]])
sparse_csc = csc_matrix(dense_array)
print("CSC 희소 행렬:")
print(sparse_csc)
-
COO 희소 행렬 예제:
Coordinate (COO) 포맷을 사용하여 희소 행렬을 생성하는 예제입니다.
from scipy.sparse import coo_matrix
import numpy as np
# COO 희소 행렬 생성
rows = np.array([0, 1, 1, 2])
cols = np.array([0, 2, 1, 2])
data = np.array([1, 2, 3, 4])
sparse_coo = coo_matrix((data, (rows, cols)), shape=(3, 3))
print("COO 희소 행렬:")
print(sparse_coo)
-
희소 행렬 연산 예제:
희소 행렬 간 덧셈, 곱셈 및 전치 연산을 수행하는 예제입니다.
from scipy.sparse import csr_matrix
import numpy as np
# 희소 행렬 생성
dense_array1 = np.array([[1, 0, 0], [0, 0, 2], [0, 3, 0]])
sparse_csr1 = csr_matrix(dense_array1)
dense_array2 = np.array([[0, 0, 0], [4, 0, 0], [0, 0, 5]])
sparse_csr2 = csr_matrix(dense_array2)
# 덧셈
result_add = sparse_csr1 + sparse_csr2
# 곱셈
result_multiply = sparse_csr1.dot(sparse_csr2)
# 전치 행렬
result_transpose = sparse_csr1.transpose()
print("덧셈 결과:")
print(result_add.toarray())
print("곱셈 결과:")
print(result_multiply.toarray())
print("전치 결과:")
print(result_transpose.toarray())
Scipy의 scipy.sparse
모듈을 사용하면 메모리 효율적으로 대용량 데이터를 다룰 수 있습니다. 희소 행렬은 대규모 데이터 분석 및 연산에서 유용합니다.