Robert Johansson. Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib, 2nd Ed.