None of what you said is wrong, but:
1) there is no need to import anything but numpy to get at pi or e (see constant section of numpy docs).
2) if you wrap all your things you expect to behave like vectors/matrices with np.array() and only use np methods to operate on them you will suffer from shape mismatches instead of TypeErrors, a slightly better fate.