Numpy boolean slicing rather than multiplying

The multiplication by the boolean is computationally expensive compared to using boolean indexing. Speeds it up a bunch.