2014-02-18 2 views
1

csr_matrix의 행에 효율적으로 할당하려면 어떻게해야합니까?csr 행렬에 대한 할당에서 멋진 색인 생성

Q[mid, :] = new_Q 

Qcsr_matrix이며, new_QQ.getrow(i)의 결과이다 :

이 오류를 준다.

저는 최신 버전의 scipy를 사용하고 있습니다.

올바른 매트릭스 유형을 사용하고 있습니까?

두 행렬에 대해 올바른 행렬 유형을 찾고 싶습니다. QB입니다. 한 번에 한 행씩 을 수정하고 한 번에 을 수정합니다. Qlil_matrix 또는 csr_matrix으로 작성해야합니다. B은 어떤 유형의 매트릭스 여야합니까? csc_matrix?

+0

'B'및 'A'란 무엇입니까? 나는'Q'와'new_Q' 만 봅니다. – hpaulj

+0

업데이트 됨, thanks –

답변

0

는 13.2에서 잘 작동하는 것 같다 :

>>> sp.__version__ 
'0.13.2' 
>>> import scipy.sparse as sps 
>>> a = sps.csr_matrix(np.arange(25).reshape(5, 5)) 
>>> a.A 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [15, 16, 17, 18, 19], 
     [20, 21, 22, 23, 24]]) 
>>> a[3] = a.getrow(0) 
>>> a.A 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [ 0, 1, 2, 3, 4], 
     [20, 21, 22, 23, 24]]) 

두 번째 질문에 대한 답에 관해서는, 당신이 행 (열) 또는하지의 희소성 패턴을 변화 여부에 따라 달라집니다. 그렇지 않다면, 예, 행에 대한 CSR, 열에 대한 CSC. 그러나 당신이 있다면, 모든 행 (칼럼) 업데이트가 매번 전체 매트릭스에 대한 데이터를 복사해야하기 때문에 CSR과 CSC는 어려움을 겪을 것입니다. 후자의 경우에는 QB 행렬 모두에 LIL을 사용하려고 시도하지만 행에 액세스 할 수 있도록 B.T과 함께 작업 할 수 있습니다.

+0

scipy 버전 0.11.0을 실행하고있는 문제가 있음을 발견했습니다. 'sudo pip install scipy --update'는 그것을 업데이트하지 않았습니다. 'sudo pip uninstall scipy'를 실행하면'import scipy; scipy .__ version__'은 여전히'0.11.0'을 출력합니다. 이전 패키지를 어떻게 찾을 수 있습니까? 제거 명령이'/ Library/Python/2.7/site-packages'에서 scipy 디렉토리를 성공적으로 제거했다는 것을 알았습니다. –