BSR에 대한 문서는 여기 bsr matrix이며, CSR 여기 csr matrix입니다. bsr로 이동하기 전에 csr을 이해하는 것이 가치가있을 수 있습니다. 유일한 차이점은 bsr에는 행렬 항목이 있지만 csr의 기본 단위는 스칼라라는 점입니다.
내가 거기에 자신이 만든되면 매트릭스를 조작 할 수있는 매우 쉬운 방법이 있지만, 여기 당신이 뭘하려는 건지의 몇 가지 예입니다 알고하지 않습니다
,
import numpy as np
from scipy.sparse import bsr_matrix, csr_matrix
row = np.array([5])
col = np.array([7])
data = np.array([6])
A = csr_matrix((data,(row,col)))
이것은 간단한 구문입니다 행렬에 원하는 모든 데이터를 배열 data
에 나열한 다음 row
과 col
을 사용하여 데이터를 저장할 위치를 지정하십시오. 이렇게하면 행렬 차원이 가장 큰 행과 열 (이 경우 6x8 행렬)에 요소를 보유 할만큼 커지게됩니다. todense()
방법을 사용하여 표준 형태로 매트릭스를 볼 수 있습니다.
A.todense()
그러나이 패턴을 사용하여 즉시 매트릭스를 조작 할 수는 없습니다. 여러분이 할 수있는 것은 행렬의 기본 scipy 표현을 수정하는 것입니다. 여기에는 indices
, indptr
및 data
의 3 가지 속성이 포함됩니다. 우선, 이미 생성 한 배열에 대해 이러한 속성의 값을 검사 할 수 있습니다.
>>> print A.data
array([6])
>>> print A.indices
array([7], dtype=int32)
>>> print A.indptr
array([0, 0, 0, 0, 0, 0, 1], dtype=int32)
data
가 예전 똑같다, 값의 1 차원 어레이 우리는 매트릭스 원한다. 차이점은이 데이터의 위치가 이제 row
및 col
대신 indices
및 indptr
으로 지정된다는 것입니다. indices
은 매우 간단합니다. 각 데이터 항목이있는 열의 목록 일뿐입니다. 항상 같은 크기이고 data
배열입니다. indptr
은 다소 까다 롭습니다. 이 데이터 구조는 각 데이터 항목에 무엇을 행 알 수 있습니다. 행 i
에 대한
열 인덱스는 우리가 볼 수있는이 정의에서 indices[indptr[i]:indptr[i+1]]
에 저장되고, 워드 프로세서에서 인용하려면 indptr
의 크기는 항상 행렬 +1의 행 수입니다. 익숙해 지려면 잠시 시간이 걸리지 만 각 행의 값을 통해 작업하면 직관력이 생깁니다. 모든 항목은 마지막 항목까지 0입니다. 즉, 행 i=0-4
의 열 인덱스는 indices[0:0]
즉 빈 배열에 저장됩니다. 이 행은 모두 0이기 때문입니다. 마지막으로, 마지막 행인 i=5
에서 data[0:1]
이 행 5, 열 7에 있음을 알리는 indices[0:1]=7
을 얻습니다.
이제 행 2 열 4에 값 10을 추가하려고한다고 가정합니다.우리는 먼저 data
속성에
A.data = np.array([10,6])
우리는 열 (10)에있을 것입니다 나타 내기 위해 indices
를 업데이트 다음
,
A.indices = np.array([4,7], dtype=np.int32)
를 넣고 마지막으로 우리는 indptr
을 수정하여 될 것이다 행 표시
A.indptr = np.array([0,0,0,1,1,1,2], dtype=np.int32)
indices
및 indptr
의 데이터 형식을 만드는 것이 중요합니다.. indptr
에서 진행되는 것을 시각화하는 한 가지 방법은 데이터가있는 행의 i
에서 i+1
으로 이동할 때 숫자가 변경된다는 것입니다. 또한 이와 같은 배열이 스파 스 매트릭스
B = csr_matrix((data,indices,indptr))
당신이 시도 단순히 배열에 색인처럼 쉬우면 그것은 좋은 것을 구성하는 데 사용할 수 있습니다,하지만 구현은 아직 없다. 적어도 당신을 시작하기에 충분해야합니다.