比较python中的两个scipy.sparse矩阵

use*_*669 5 python scipy sparse-matrix

我从事处理大型网络的程序,因此我必须使用稀疏矩阵(最好scipy.sparse.csr).现在我想编写一个函数,它接受两个稀疏布尔矩阵A和B,并返回B而没有在A中设置的那些条目.这是一个伪代码示例.

def f(A, B):
    return B and (not A)
Run Code Online (Sandbox Code Playgroud)

如何用scipy.sparse矩阵完成这个?

War*_*ser 2

这是实现您的功能的一种方法:

def f(a, b):
    return b - b.multiply(a)
Run Code Online (Sandbox Code Playgroud)

b.multiply(a)实际上是一种逐元素and操作。

这是一个例子。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)
Run Code Online (Sandbox Code Playgroud)