10 분 이해 Scipy.cscmatrix 와 coomatrix

10505 단어 PythonScipyMatrix
Scipy 에서 흔히 볼 수 있 는 몇 가지 행렬,lil 포함matrix 와 cscmatrix、coo_matrix,최근 네트워크 구 조 를 연구 하 는 데 있어 서 학습 을 표시 하기 위해 서 는 이 도 구 를 사용 해 야 합 니 다.
공식 문 서 는 사실 이미 비교적 상세 하 게 말 했 는데,나 는 여기에 좀 더 보충 하여 문 제 를 더욱 간단명료 하 게 이야기 하 겠 다.
csc_matrix:
Example
>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> csc_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)

>>>
>>> row = np.array([0, 2, 2, 0, 1, 2])
>>> col = np.array([0, 0, 1, 2, 2, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_matrix((data, (row, col)), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

data 는 저 장 된 데이터 로 행렬 은 열 로 저장 되 고 많은 사람들 이 선형 대 수 를 배 웠 으 며 행렬 이 보통 열 로 저장 되 는 지 줄 로 저장 되 는 지 조차 몰 랐 다.벡터 벡터 의 측면 에서 볼 때 행렬 은 모두 열 방식 으로 저장 되 어야 한다.열 로 이해 하고 저장 하 는 것 이 실제 수요 에 더욱 부합된다.우리 가 자주 사용 하 는 x=[1,2,3,5]는 연산 할 때 모두 x^T 를 옮 겨 야 한다.실제로 Numpy 에서 행렬 도 csc 를 사용 합 니 다.matrix 메모리.
row,col data 의 뜻 은 분명 합 니 다.row[i],col[i]에 저 장 된 데 이 터 는 data[i],0 줄,0 열 에 1 을 저 장 했 습 니 다.2 줄,0 열 에 2 저장 하기;2 줄,2 열 저장 6.
4.567913.이것 은 약간 복잡 하지만 쉽게 이해 할 수 있 습 니 다.indptr 는 indices 매트릭스 의 시작 과 끝 에 있 는 index 를 나타 내 고 indptr[0,2]는 indices[0:2]가 첫 번 째 열 에 있 는 데이터 의 위치 0 줄 과 2 줄 을 저 장 했 습 니 다.indices[2:3]는 두 번 째 열 에 있 는 데이터 위 치 를 저 장 했 습 니 다.즉,2,두 번 째 줄(0 줄 에서 시작 하 는 것 을 주의 하 세 요)은 각각 indices[2]가 하나의 data[i]에 대응 합 니 다.Python list[0:i]의 수치 가 list[0...i-1]인 것 을 주의 하 십시오.실제 indeces[0:2]는 indices 의 첫 번 째 와 두 번 째 수치 0 과 2 만 취 했 습 니 다.대표 데 이 터 는 0 과 2 줄 이 고 나머지 위 치 는 0 입 니 다.inices[2:3]는 indices[2]의 수치 2 를 취 했 고 대표 데 이 터 는 두 번 째 줄 에 있 으 며 나머지 위 치 는 모두 0 이다.
coo_matrix
이게 더 쉬 워 요.1 분만 주세요.직접 위의 예 는 다음 과 같다.즉,n 줄,m 열 에 data[i]가 저장 되 어 있 고 나머지 위 치 는 모두 0 이다.
>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

>>>
>>> from scipy.sparse import coo_matrix
>>> coo_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)

참고 문서
https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.html#scipy.sparse.csc_matrix
https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html#scipy.sparse.coo_matrix

좋은 웹페이지 즐겨찾기