Use mask selection in compress (#4548)
Use mask selection in compress (#4548)

* Trim Dask Array that extends past condition

If the `condition` is shorter than the Dask Array, treat it as if it is
filled with `False` values at the end. In other words, trim the Dask
Array down to the length of the `condition`. This works just as well
when the `condition` is a Dask Array as when it is a NumPy array.

* Use masked selection to implement compress

As masked selection is supported by Dask Arrays, NumPy arrays, and other
array types, go ahead and change the `compress` code to use masked
selection in all cases. Should make it easier for other array types to
benefit from this code. Simplifies our code and removes a branch as
well.

* Coerce `compress` arguments to Dask Arrays

* Drop unneeded check with `condition` in `compress`

* Swap `condition` and `axis` checks in `compress`

* Drop `condition` length check

If the length of `condition` is shorter, the array will be shortened
with or without this check. Otherwise if the length of `condition` is
the same, then this will be a no-op (and we already test for this). In
the rare event `condition` is longer than our array, this will do
nothing, but we will generate an error later.

* Simplify slicing with `condition`

Uses the same comprehension trick for truncating the Dask Array above
when slicing with the mask.

ContinuumIO/dask,jakirkham/dask,mrocklin/dask,ContinuumIO/dask,jcrist/dask,jcrist/dask,dask/dask,blaze/dask,mrocklin/dask,blaze/dask,jakirkham/dask,dask/dask