[파이썬][Scipy] 희소 배열 (Sparse Arrays) 예제

Scipy에서 희소 배열 (Sparse Arrays)를 다루려면 scipy.sparse 모듈을 사용합니다. 희소 배열은 대부분의 원소가 0인 경우에 사용되며, 메모리 효율적으로 데이터를 저장하고 처리할 수 있습니다. 아래는 몇 가지 희소 배열 예제입니다.

  1. 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)
  1. 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)
  1. 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)
  1. 희소 행렬 연산 예제:

    희소 행렬 간 덧셈, 곱셈 및 전치 연산을 수행하는 예제입니다.

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 모듈을 사용하면 메모리 효율적으로 대용량 데이터를 다룰 수 있습니다. 희소 행렬은 대규모 데이터 분석 및 연산에서 유용합니다.