728x90
scipy.sparse.coo_matrix
class scipy.sparse.
coo_matrix
(arg1, shape=None, dtype=None, copy=False)
coo_matrix는 아래와 같은 방법으로 이용 가능하다
coo_matrix(D)
dense matrix D와 함께 사용
coo_matrix(S)
또 다른 sparse matrix S (equivalent to S.tocoo())
coo_matrix((M, N), [dtype])
shape(M, N)과 함께 빈 matrix를 만든다. dtype은 선택적이고 기본으로 dtype='d'이다
coo_matrix((data, (i, j)), shape=(M, N)])
아래와 같은 3개의 배열을 이용해 만든다.
- data[:] 는 순서에 상관없이 matrix 전체를 이용
- i[:]는 matrix의 행 색인을 이용
- j[:]는 matrix의 열 색인을 이용
노트
Sparse matrix는 산술 연산에 사용될 수 있다. 이 것은 덧셈, 뺄셈, 곱셈, 나눗셈, 행렬을 지원한다.
COO 포멧의 이점
- sparse 포멧에 따라 빠른 변환이 가능함
- entries 복제가 가능함
- CSR/CSS 포멧에서 빠른 변환이 가능함
COO 포멧의 단점
- 아래 사항을 직접적으로 지원하지 않음
- 산술 연산
- 슬라이싱
용도
- COO는 sparse matrix를 만드는 빠른 포멧이다
- 일단 matrix가 만들어지면, 빠른 산술 연산과 행렬 벡터 연산을 위해 CSR 또는 CSC 포멧으로 변환이 가능하다
- CSR 또는 CSC 포멧으로 변환 시 기본적으로 중복되는 (i, j)항목이 함께 합산된다. 이것은 유한 요소 행렬 등의 효율적인 구성을 용이하게한다
(아래 예제를 보면 이해가 될 것이다)
예제
Reference
https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html
728x90