"Now if I give you two piles with 0 bricks on them, you still have a rule to chose which one, just you do not have to apply it at all."

No! If you ask people to pick 'the prettier brick' and give them no bricks (or two piles containing no bricks, if you prefer), they will say "what the hell are you talking about, you didn't give me any bricks?". And this is correct behaviour for numpy, too.

"The rule itself is still good.".

I have already addressed this faulty reasoning with the example (3/3=1, 2/2=1, 1/1=1, 0/0=...1). "The rule being good" to your mind means nothing if "the rule" does not correspond to semantically meaningful behaviour!  

So - if your reasoning is correct - let's apply it consistently in numpy and 'fix' the divide function to start returning zero instead of a 'divide by zero' error.  After all, 'the rule is good'? If not, why not?

The code I propose returns 'an empty pile of bricks', and a warning that what you are doing doesn't make sense.

The current numpy master code creates a magical brick with 'zero' written on it. 

The current numpy master code is therefore buggy.