MARCO MAFFEZZOLI
Scientific stack
Scientific Computing Tools for Python (partly adapted from the Scipy website):
Scientific computing in Python builds upon a small core of packages:
- NumPy, the fundamental package for numerical computation. It defines the numerical array and matrix types and basic operations on them.
- The SciPy library, a collection of numerical algorithms and domain-specific toolboxes, including signal processing, optimization, statistics and much more.
- Matplotlib, a mature and popular plotting package, that provides publication-quality 2D plotting as well as rudimentary 3D plotting
On this base, the SciPy ecosystem includes general and specialised tools for data management and computation, productive experimentation and high-performance computing. Below we overview some key packages.
Data and computation:
- pandas, providing high-performance, easy to use data structures.
- SymPy, for symbolic mathematics and computer algebra.
- scikit-image is a collection of algorithms for image processing.
- scikit-learn is a collection of algorithms and tools for machine learning.
- h5py and PyTables can both access data stored in the HDF5 format.
- autograd, allows to automatically differentiate native Python and Numpy code.
- tensorly, simple and fast tensor learning in Python.
- opt_einsum, a very powerful function for contracting tensors of arbitrary dimension and index.
Productivity and high-performance computing:
- IPython, a rich interactive interface, letting you quickly process data and test ideas.
- The Jupyter notebook provides IPython functionality and more in your web browser, allowing you to document your computation in an easily reproducible form.
- Cython extends Python syntax so that you can conveniently build C extensions, either to speed up critical code, or to integrate with C/C++ libraries.
- Dask, Joblib or IPyParallel for distributed processing with a focus on numeric data.
- Numba gives you the power to speed up your applications with high performance functions written directly in Python; with a few annotations, array-oriented and math-heavy Python code can be just-in-time compiled to native machine instructions, similar in performance to C, C++ and Fortran.
Last change 15/06/2018