COO( Coordinate list) 방식이란 ?
COO(Coordinate List)는 '좌표 리스트'라는 이름 그대로, 0이 아닌 데이터가 있는 위치(좌표)와 그 값만을 따로 모아서 저장하는 방식이다.
0이 아무리 많아도 우리가 궁금한 건 "값이 어디에 있고, 그 값이 무엇인가 " 이므로, 나머지 0은 과감히 무시하고 세 개의 리스트(또는 배열) 에 정보를 담는다.
-> (행, 열, 값)의 형태로 저장한다.
-> 0은 저장하지 않고, 필요한 값만 좌표로 기록한다.
-> 좌표 리스트
COO의 저장 구조
예 :
다음과 같은 3 X 3 행령이 있다고 가정해 본다.

이 행렬을 COO 방식으로 저장하면 다음과 같다.
- Row (행 인덱스) : [0, 1]
- Col (열 인덱스) : [2, 0]
- Data (값) : [7, 5]
해석 :
- (0, 2) 위치에 값 7이 있음.
- (1, 0) 위치에 값 5이 있음.
COO 방식의 장점
- 매우 직관적 : 구조가 단순하여 행렬을 생성허가나 수정하기가 매우 쉽다.
- 변환의 교검 : 희소 행렬을 처음 구축할 때 가장 많이 쓰이는 '중간 단계' 포맷이다. 보통 COO로 데이터를 모은 뒤, 연산 효율이 더 좋은 CSR 방식으로 변환하고 한다.
-> 구현 간단, 데이터 추가 (append) 쉬움, 직관적인 구조
COO 방식의 단점
- 연산 효율 저하 : 특정 행이나 열을 조회하려면 인덱스 리스트를 처음부터 끝까지 다 훑어야 할 수도 있다.
- 중복 정보 : 행 인덱스를 매번 숫자로 기록해야 하므로, 후술할 CSR 방식에 비해 메모리 효율이 약간 떨어질 수 있다.
-> 행/열 접근 느림, 연산 성능 낮음, 중복 좌표 처리 필요
COO -> CSR / CSC 변환 후 수행
파이썬 실습: Scipy 활용
데이터 분석 라이브러인 Scipyㄹㄹ 사용하면 COO 형식을 아주 쉽게 만들 수 있다.
from scipy.sparse import coo_matrix
mtx = coo_matrix((data, (row, col)), shape=(3, 3))
언제 사용할까 ?
COO는 "희소 행렬을 처음 만들 때 " 가장 빛을 발한다. 데이터를 하나씩 쌓아 올릴 때는 좌표 기반이 가장 편하기 때문이죠 . 하지만 행렬 곱셈과 같은 복잡한 수치 연산을 수행할 때는 더 압축된 방식인 CSR로 변환하여 사용하는 것이 정석이다.
- 희소 행렬 생성 단계
- 데이터 수집/ 로깅
- 그래프 데이터 표현
- 추천 시스템
요약
COO = "좌표로 저장하는 가장 단순한 희소 행렬 구조"
COO는 0이 아닌 값만 (행, 열, 값) 형태로 저장하여 메모리를 절약하는 희소 행렬 표현 방식이다.
COO 방식은 희소 행렬을 가장 직관적으로 표현할 수 있는 구조로, 데이터 생성과 초기 처리 단계에서 매우 유용하다. 다만 연산 효율은 떨어지기 때문에 실제 계산에서는 CSR이나 CSC 형태로 변환하여 사용하는 것이 일반적이다.
제미나이, 챗지피티 등을 이용 하여 작성
'LLM' 카테고리의 다른 글
| 18. CSC ( Compressed Sparse Column ) (0) | 2026.05.06 |
|---|---|
| 17. CSR ( Compressed Sparse Row) (0) | 2026.05.04 |
| 15. 희소 행렬 (Sparse Matrix) (0) | 2026.04.29 |
| 14. 카운트 기반(Count-based) 모델 (0) | 2026.04.28 |
| 13. GloVe (0) | 2026.04.27 |