The selection of python packages adapted from the Topical Software list on Scipy

Scientific Computing

NumPy: NumPy is the package SciPy builds on and requires as a pre-requisite. It is a hybrid of both Numeric and Numarray incorporating features of both. If you are new to Numeric computing with Python, you should use NumPy.

Scipy: Scipy is an umbrella project which includes a variety of high level science and engineering modules together as a single package. SciPy includes modules for linear algebra, optimization, integration, special functions, FFTs, signal and image processing, ODE solvers, and others.

RPy2: RPy is a very simple, yet robust, Python interface to the R Programming Language. It can manage all kinds of R objects and can execute arbitrary R functions (including the graphic functions). All errors from the R language are converted to Python exceptions. Any module installed for the R system can be used from within Python.

Running Code Written In Other Languages

SWIG: SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is primarily used with common scripting languages such as Perl, Python, Tcl/Tk and Ruby. The SWIG Typemaps page SWIG modifications for usage with Numeric arrays.

Boost.Python: Boost.Python is a C++ library which enables seamless interoperability between C++ and Python. The PythonInfo Wiki contains a good howto reference. “c++-sig”: at is devoted to Boost and you can subscribe to their mailing list. Some personal notes can be found at

F2PY: F2PY provides a connection between the Python and Fortran languages. F2PY is a Python extension tool for creating Python C/API modules from (handwritten or F2PY generated) signature files (or directly from Fortran sources).

Plotting, data visualization, 3-D programming

matplotlib: matplotlib is a Python 2-D plotting library which produces publication quality figures using in a variety of hardcopy formats (PNG, JPG, PS, SVG) and interactive GUI environments (WX, GTK, Tkinter, FLTK, Qt) across platforms. matplotlib can be used in python scripts, interactively from the python shell (ala matlab or mathematica), in web application servers generating dynamic charts, or embedded in GUI applications. For interactive use, IPython provides a special mode which integrates with matplotlib. See the matplotlib cookbook for recipes.


PuLP: PuLP is a Python package that can be used to describe linear programming and mixed-integer linear programming optimization problems

Pyiopt: Pyiopt A Python interface to the COIN-OR Ipopt solver

pycplex: pycplex a Python interface to the ILOG CPLEX Callable Library.

cvxopt: A free software package for convex optimization based on Python.

Partial differential equation (PDE) solvers

FiPy: FiPy is an object oriented, partial differential equation (PDE) solver, written in Python , based on a standard finite volume (FV) approach. The framework has been developed in the Metallurgy Division and Center for Theoretical and Computational Materials Science (CTCMS), in the Material Measurement Laboratory (MML) at the National Institute of Standards and Technology (NIST).

SfePy: SfePy is a software for solving systems of coupled partial differential equations (PDEs) by the finite element method in 2D and 3D. It can be viewed both as black-box PDE solver, and as a Python package which can be used for building custom applications. The time demanding parts implemented in C/Cython.

Artificial intelligence & machine learning

scikit learn: scikit is a general purpose efficient machine learning and data mining library in Python, for scipy.

NeuroLab: Neurolab is a simple and powerful Neural Network Library for Python.

Bayesian Statistics

PyMC: PyMC is a Python module that provides a Markov chain Monte Carlo (MCMC) toolkit, making Bayesian simulation models relatively easy to implement. PyMC relieves users of the need for re-implementing MCMC algorithms and associated utilities, such as plotting and statistical summary. This allows the modelers to concentrate on important aspects of the problem at hand, rather than the mundane details of Bayesian statistical simulation.

PyBayes: PyBayes is an object-oriented Python library for recursive Bayesian estimation (Bayesian filtering) that is convenient to use. Already implemented are Kalman filter, particle filter and marginalized particle filter, all built atop of a light framework of probability density functions. PyBayes can optionally use Cython for large speed gains (Cython build is several times faster).

Biology (including Neuroscience)

Brian: Brian is a simulator for spiking neural networks in Python.

BioPython: BioPython is n international association of developers of freely available Python tools for computational molecular biology.

PyCogent: PyCogent is a software library for genomic biology.

Dynamic Systems

PyDSTool: PyDSTool is an integrated simulation, modeling and analysis package for dynamical systems (ODEs, DDEs, DAEs, maps, time-series, hybrid systems). Continuation and bifurcation analysis tools are built-in, via PyCont. It also contains a library of general classes useful for scientific computing, including an enhanced array class and wrappers for SciPy algorithms. Application-specific utilities are also provided for systems biology, computational neuroscience, and biomechanics. Development of complex systems models is simplified using symbolic math capabilities and compositional model-building classes. These can be “compiled” automatically into dynamically-linked C code or Python simulators.

Simpy: SimPy is an object-oriented, process-based discrete-event simulation language based on standard Python. It is released under the GNU Lesser GPL (LGPL). SimPy provides the modeler with components of a simulation model including processes, for active components like customers, messages, and vehicles, and resources, for passive components that form limited capacity congestion points like servers, checkout counters, and tunnels. It also provides monitor variables to aid in gathering statistics. Random variates are provided by the standard Python random module. SimPy comes with data collection capabilities, GUI and plotting packages. It can be easily interfaced to other packages, such as plotting, statistics, GUI, spreadsheets, and data bases.