稀疏矩阵行和列表之间的逐元素布尔运算



我想在稀疏矩阵的一行和另一个列表之间执行元素逻辑运算。

from scipy.sparse import lil_matrix
a=lil_matrix((3,3), dtype=bool)
b=[True,False,True]
a[2,:]=a[2,:] or b

然而,这会返回:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all().

中出现错误的原因已经有一个很好的解释了

然而,a.any()a.all()将只返回一个真值,而不执行元素方面的操作。此外,np.logical_or(a[2,:],b)返回相同的错误。

您需要做两件事:

将列表强制转换为np.ndarray,并使用+而不是or。由于一些原因,我不知道bitwise_or运算符|(用于数组(在这里不起作用。

a[2] += np.array(b)

矢量化ornumpy运算;公共列表没有直接的等价物。最有效和可读的方法是将布尔列表转换为np_array,然后应用该操作,让numpy的处理来规则该过程。

相关内容

  • 没有找到相关文章

最新更新