2017-11-24 15 views
1

나는 희소 행렬 A을 csr_matrix 형식으로 가지고 있습니다. A은 방향이 지정되지 않은 그래프의 가중치가있는 인접 행렬이므로 대칭 및 비 음수입니다. 그래프 Lapalican을 계산하고 싶습니다.스파 스 그래프를 얻는 방법 파이썬에서 라플라시안 매트릭스?

내가 코드는 아주 간단합니다 MATLAB, 작업을하는 데 사용 :

L = diag(sum(A,2)) - A % or L=diag(sum(A))-A because A is symmetric 

그러나 우리가 파이썬에서 어떻게 할 수 있습니까? 파이썬에서 행렬이 희소하다. 나는 단지 추악한 해결책을 제시 할 수 있습니다 :

import numpy as np 
import scipy.sparse as sps 
L = sps.diags(np.reshape(np.array(A.sum(axis=1)), A.shape[0])) - A 

누구보다 우아한 해결책을 알고 있습니까?

n,m = A.shape 
diags = A.sum(axis=1) 
D = sps.spdiags(diags.flatten(), [0], m, n, format='csr') 
D - A 

답변

1

networkX library는 스파 스 행렬 A를 위해 그것을 수행하는 방법이다. spdiags 및 병합을 사용하면 더 잘 보입니다.
+0

감사 : 작은 개선하여 방법과 매우 유사 (스파 스 모두 유지) - – rozyang