
Its fully intentional as it is the correct generalization from an N-D boolean index to include a 0-D boolean index. To be fair, there is a footnote in the "Detailed notes" saying that: "the nonzero equivalence for Boolean arrays does not hold for zero dimensional boolean arrays.", this is for technical reasons since `nonzero` does not do useful things for 0-D input.
In any case, a boolean index always does the following: 1. It will *remove as many dimensions as the index has, because this is the number of dimensions effectively indexed by it* 2. It will add a single new dimension at the same place. The length of this new dimension is the number of `True` elements. 3. If you have multiple advanced indexing you get annoying broadcasting of all of these. That is *always* confusing for boolean indices. 0-D should not be too special there... And this generalizes to 0-D just as well, even if it may be a bit surprising at first.
I guess if those are the base rules for boolean indices this makes sense. So that brings up the question then, is there a way to add arbitrary empty dimensions using an index?
I have written much of this more clearly once before in this NEP, which may be a good read to _really_ understand it: https://numpy.org/neps/nep-0021-advanced-indexing.html In general, I wonder if going into much depth about how 0-D arrays are not actually really handled very special is good. Yes, its confusing on its own, but it seems also a bit like overloading the user with unnecessary knowledge?
The page I referenced is already written like a very highly technical document, so I think it should embrace that and fully describe the spec of NumPy indexing. NumPy could use more user-friendly documentation for indexing, but that page ain't it. FWIW, I wrote some documentation on slices of my own here https://quansight.github.io/ndindex/slices.html. I eventually plan to extend this to all forms of NumPy indexing. Anyway, the three bullet points you mentioned above would be helpful to include in the docs.
Cheers, Sebastian