>I guess it's just because it's easy to use and all the numerical stuff is done with c-bindings anyway?
No, it's horrible, because now you have both python types and numpy types, which don't really interact well with one another. If you are using a language made for numerical analysis (e.g. Julia), a lot of headaches disappear instantly.
Python is 100% just a case of a language being used because it is being used. It has, by itself, few merits to many of the tasks it is actually being for.
>design flaw
It is a tradeoff though. Rust is paying that tradeoff by being very restrictive about certain patterns and being in general quite complex to learn.