Scientific Computing Tools for Python

SciPy refers to several related but distinct entities:

  • The SciPy Stack, a collection of open source software for scientific computing in Python, and particularly a specified set of core packages.
  • The community of people who use and develop this stack.
  • Several conferences dedicated to scientific computing in Python - SciPy, EuroSciPy and
  • The SciPy library, one component of the SciPy stack, providing many numerical routines.

The SciPy Stack

Core 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
  • pandas, providing high-performance, easy to use data structures.
  • SymPy, for symbolic mathematics and computer algebra.
  • IPython, a rich interactive interface, letting you quickly process data and test ideas. The IPython notebook works in your web browser, allowing you to document your computation in an easily reproducible form.
  • nose, a framework for testing Python code.

Other packages

There are many more packages built on this stack - too many to list here. This is a brief overview of a few major ones:

  • Chaco is another Python plotting toolkit designed from the ground up to be great for embedded, interactive plotting. It is built on Traits, both are part of the Enthought Tool Suite.
  • Mayavi is a powerful and user-friendly framework for 3D visualization, built on top of the award winning Visualization Toolkit, VTK.
  • 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.
  • Scikits are extra packages for more specific functionality. scikit-image and scikit-learn are two of the most prominent.
  • h5py and PyTables can both access data stored in the HDF5 format.

See the Topical Software page for more.