我有一组填充有布尔值的稀疏矩阵,需要对其执行逻辑操作(主要是逐元素的OR运算)。
就像在numpy中一样,使用dtype='bool'对矩阵求和会得到逐元素的OR结果,但是会产生一个不好的副作用:
>>> from scipy import sparse
>>> [a,b] = [sparse.rand(5,5,density=0.1,format='lil').astype('bool')
... for x in range(2)]
>>> b
<5x5 sparse matrix of type '<class 'numpy.bool_'>'
with 2 stored elements in LInked List format>
>>> a+b
<5x5 sparse matrix of type '<class 'numpy.int8'>'
with 4 stored elements in Compressed Sparse Row format>
数据类型被更改为'int8',这将对未来操作造成问题。可以通过以下方式解决:
数据类型被更改为 'int8',这会对将来的操作造成问题。 可以通过以下方式解决:
(a+b).astype('bool')
但我有一种印象,所有这些类型更改都会导致性能损失。
为什么结果的dtype与操作数不同?
在Python中对稀疏矩阵进行逻辑运算是否有更好的方法?
False < True
被认为是真的,False < False
被认为是假的等等... - rodrigolece