Best way to differentiate an array of indices vs a boolean mask
You can check the dtype, or iterate through and check if the values are not in the set {True, False} as well as checking if the values are not in the set {0,1}
Boolean masks must be the same shape as the array they are intended to index into, so that's another check. 
But there's no hard and fast way to distinguish a priori whether an array of consisting of only values in {0,1} is one or the other without additional knowledge.
If I am given an array of indices but I don't know whether it is a regular index array or a boolean mask, what is the best way to determine which it is?