That was my initial plan, simply assuming that every sparse matrix [column] has zeros in it (which could also be maxima, btw). The disadvantage is that the scaler behaves differently for a dense matrix X and its sparse conversion. I'd suggest keeping the current behavior as the default and adding an additional "assume_contains_zeros" option to the constructor for the case you mentioned?

Can you be more specific about "handling" the pseudorandom signs?