Scientific Computing Tools for Python¶
SciPy refers to several related but distinct entities:
The SciPy ecosystem, a collection of open source software for scientific computing in Python.
The community of people who use and develop this stack.
Several conferences dedicated to scientific computing in Python - SciPy, EuroSciPy and SciPy.in.
The SciPy library, one component of the SciPy stack, providing many numerical routines.
The SciPy ecosystem¶
Scientific computing in Python builds upon a small core of packages:
Python, a general purpose programming language. It is interpreted and dynamically typed and is very suited for interactive work and quick prototyping, while being powerful enough to write large applications in.
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, though there are many more relevant 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.
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.