Ich habe eine Reihe von dünn besetzten Matrizen, die mit booleschen Werten gefüllt sind, für die ich logische Operationen ausführen muss (meistens elementweises ODER).Boolesche Operationen auf scipy.sparse-Matrizen
wie in numpy, Summieren Matrizen mit dtype ‚Bool‘ = gibt das Element weise oder aber es ist eine unangenehme Nebenwirkung:
>>> 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>
Der Datentyp ‚int8‘ geändert wird, was bewirkt, Probleme für zukünftige Operationen.
(a+b).astype('bool')
Aber ich habe den Eindruck, dass dies alles Typänderung eine Performance-Einbußen führen würde: Dies könnte mit den Worten herumgesprochen werden.
Warum unterscheidet sich der dtype des Ergebnisses von den Operanden?
Und gibt es eine bessere Möglichkeit, logische Operationen auf dünn besetzten Matrizen in Python zu tun?