4
我使用一個處理大型網絡的程序,因此我必須使用稀疏矩陣(最好是scipy.sparse.csr
)。現在我想編寫一個函數,該函數使用兩個稀疏布爾矩陣A和B,並返回B,但不包含那些在A中設置的條目。這是一個僞代碼示例。在python中比較兩個scipy.sparse矩陣
def f(A, B):
return B and (not A)
這怎麼能用scipy.sparse矩陣完成?
我使用一個處理大型網絡的程序,因此我必須使用稀疏矩陣(最好是scipy.sparse.csr
)。現在我想編寫一個函數,該函數使用兩個稀疏布爾矩陣A和B,並返回B,但不包含那些在A中設置的條目。這是一個僞代碼示例。在python中比較兩個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
操作。
下面是一個例子。 a
和b
是稀疏矩陣:
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)
這就是我正在尋找的。非常感謝您的快速幫助 – user3091669
這僞代碼不會與numpy的布爾矩陣的工作,它會抱怨你正在使用的矩陣布爾運算。以下將使用正常的矩陣:'返回B&〜A'。 –
即使其中任何一個都有效,你也不會真的想做'不是'或'〜A',因爲結果不會很稀疏。 –