Indexing a dataframe with a 2D boolean array?
It's not clear to me from the [docs](http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-position) what exactly is meant by "boolean array". It seems from all of the examples I've seen that `.loc` expects a one dimensional array that just selects rows or columns (e.g. https://github.com/pydata/pandas/issues/5257).

Should it be possible to select using a 2D array (the same shape as the dataframe)? This is possible in R, and returns a vector of the values selected, although it would be nice to also have the option of returning a dataframe with NaNs where the `False` values are (this is very useful for un-gap-filling data, if you have an index of what was gap filled).

e.g.:

``` python
In [2]: a = pd.DataFrame(dict(a=[1,2,3], b=[4,5,6]))

In [3]: a
Out[3]: 
   a  b
0  1  4
1  2  5
2  3  6

In [4]: (a%2==0).as_matrix()
Out[4]: 
array([[False,  True],
       [ True, False],
       [False,  True]], dtype=bool)

# This doesn't work, it gives ValueError: too many values to unpack (expected 1)
In [5]: a.loc[(a%2==0).as_matrix()]
# But this result would be nice:
Out[6]: 
   a  b
0  NaN  4
1  2    NaN
2  NaN  6
```

Maybe with a `collapse=` option to `loc`, to return a series instead of a DF. Not sure how that would work with multiple data types though...

Or perhaps there is already a way to do something like this?
