An example plotting Bessel functions and finding their local maxima
|Developer(s)||community project sponsored and supported by Enthought|
|Stable release||0.12.0 / 2013-04-07|
|Operating system||Cross-platform (list)|
SciPy is an open source library of algorithms and mathematical tools for the Python programming language that grew out of Travis Oliphant's original collection of extension modules for Python which he released in 1999 under the name Multipack (named for the netlib packages that it brought together such as ODEPACK, QUADPACK, and MINPACK). Pearu Peterson was also doing work in using an automatic fortran-to-python connection tool called f2py to connect LAPACK and BLAS to Python. In 2001, Travis Oliphant, Eric Jones and Pearu Peterson merged their modules to create the SciPy package itself. Since 2001 many contributors have joined to improve both the quality and mathematical coverage of the SciPy package. Many of these developers meet at SciPy conferences held throughout the world.
SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, FFT, signal and image processing, ODE solvers and other tasks common in science and engineering. It has a similar audience to applications such as MATLAB, GNU Octave, and Scilab.
SciPy is currently distributed under the BSD license and its development is sponsored by an open community of developers.
Data structures 
The basic data structure in SciPy is a multidimensional array provided by the NumPy module. Older versions of SciPy used Numeric as an array type, which is now deprecated in favor of the newer NumPy array code.
- constants: physical constants and conversion factors (since version 0.7.0)
- cluster: hierarchical clustering, vector quantization, K-means
- fftpack: Discrete Fourier Transform algorithms
- integrate: numerical integration routines
- interpolate: interpolation tools
- io: data input and output
- lib: Python wrappers to external libraries
- linalg: linear algebra routines
- misc: miscellaneous utilities (e.g. image reading/writing)
- ndimage: various functions for multi-dimensional image processing
- optimize: optimization algorithms including linear programming
- signal: signal processing tools
- sparse: sparse matrix and related algorithms
- spatial: KD-trees, nearest neighbors, distance functions
- special: special functions
- stats: statistical functions
- weave: tool for writing C/C++ code as Python multiline strings
Additional functionality 
SciPy's core feature set is extended by many other dedicated software tools. For example,
- Plotting. The currently recommended 2-D plotting package is Matplotlib, however, there are many other plotting packages such as HippoDraw, Chaco, and Biggles. Other popular graphics tools include Python Imaging Library and MayaVi (for 3D visualization).
- Optimization. While SciPy has its own optimization package, OpenOpt has access to more optimization solvers and can involve Automatic differentiation.
- Advanced data analysis. Via RPy, SciPy can interface to the R statistical package for advanced data analysis.
- Database. SciPy can interface with PyTables, a hierarchical database package designed to efficiently manage large amounts of data using HDF5.
- Interactive shell. IPython is an interactive environment that offers debugging and coding features similar to that which MATLAB offers.
- Symbolic mathematics. There are several Python libraries—such as PyDSTool Symbolic and SymPy—that offer symbolic mathematics.
See also 
- Official website
- SciPy Course Outline by Dave Kuhlman
- SciPy API reference
- Python Scientific Lecture Notes