It would be nice to migrate `np.dot` to use the inbuilt `python` @ operator for matrix multiplication. Some thought is required as `np.dot` doesn't behave in the exact same way as `@` https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication