2013-12-11 4 views
4

큰 네트워크를 다루는 프로그램에서 작업하기 때문에 희소 행렬 (preferrably scipy.sparse.csr)을 사용해야합니다. 이제 나는 두 개의 드문 드문 부울 행렬 A와 B를 취하여 A에 설정된 항목없이 B를 반환하는 함수를 작성하려고합니다. 여기에는 의사 코드 예제가 있습니다.두 개의 scipy.sparse 행렬을 파이썬으로 비교하기

def f(A, B): 
    return B and (not A) 

어떻게하면 scipy.sparse 행렬로이 작업을 수행 할 수 있습니까?

def f(a, b): 
    return b - b.multiply(a) 

b.multiply(a) 효과적으로 요소 현명한 and 작업입니다 :

+0

이 의사는 NumPy와 부울 행렬과 함께 작동하지 않을 것입니다. 다음은 정상적인 행렬과 함께 작동합니다 :'return B & ~ A'. –

+0

두 경우 모두 효과가 있더라도 결과가 희박하지 않기 때문에 'not A'또는 '~ A'를하고 싶지 않을 것입니다. –

답변

2

는 여기에 귀하의 기능을 구현하는 하나의 방법입니다.

다음은 예입니다. ab 스파 스 매트릭스있다 : 당신이 행렬에 부울 연산을 사용하는 불평 것에

In [134]: b.A 
Out[134]: array([[False, False, True, True]], dtype=bool) 

In [135]: a.A 
Out[135]: array([[False, True, False, True]], dtype=bool) 

In [136]: f(a,b).A 
Out[136]: array([[False, False, True, False]], dtype=bool) 
+0

그게 내가 찾고있는 것. 고마워요. 빠른 도움 – user3091669

관련 문제