Ho una serie di matrici sparse piene di valori booleani su cui ho bisogno di eseguire operazioni logiche su (principalmente OR per elementi).Operazioni booleane su matrici scipy.sparse
come in NumPy, sommando matrici con DTYPE = 'bool' dà l'elemento-saggio o, comunque c'è un brutto effetto collaterale:
>>> 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>
Il tipo di dati viene cambiato in 'int8', che provoca problemi per le operazioni future. Questo potrebbe essere ottenuto in giro con dicendo:
(a+b).astype('bool')
Ma ho l'impressione che tutto questo tipo di cambiamento potrebbe causare un calo di prestazioni.
Perché il dtype del risultato è diverso dagli operandi?
E c'è un modo migliore per eseguire operazioni logiche su matrici sparse in python?