@gbb: You're talking about the behaviour of `np.select([np.array([], dtype=bool)], [np.array([])])`, right? In master that returns an empty array. This is the correct behaviour -- an empty array is "an empty pile of bricks". And there should be no warning, there isn't anything exceptional going on here.

Possibly you're thinking instead about `np.select([], [], default=7)`, which in master returns `7`.  Here I do think that this behaviour is buggy and should be changed. But whether you're thinking about that or not, the code you're actually arguing about here is the code that controls what happens in the `np.select([np.array([], dtype=bool)], [np.array([])])` case, that that code is currently incorrect.