我处理的是一个处理大型网络的程序,因此我必须使用稀疏矩阵(最好是scipy.sparse.csr
)。现在我想写一个函数,它接受两个稀疏的布尔矩阵A和B,并返回B而没有在A中设置的那些条目。这是一个伪代码示例。
def f(A, B):
return B and (not A)
如何使用scipy.sparse矩阵完成此操作?
答案 0 :(得分:2)
以下是实现功能的一种方法:
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)