# 15.8 Optional Numeric Modules

Many other modules are built on top of Numeric or cooperate with it. You can download some of them from the same URL as Numeric (http://sourceforge.net/projects/numpy). Some of these extra modules may already be included in the package you have downloaded. Documentation for the modules is also part of the documentation for Numeric. A rich library of scientific tools that work well with Numeric is SciPy, available at http://www.scipy.org. I highly recommend it if you are using Python for scientific or engineering computing.

Here are some key optional Numeric modules:

MLab

MLab supplies many Python functions written on top of Numeric. MLab's functions are similar in name and operation to functions supplied by the product Matlab.

FFT

FFT supplies Python-callable Fast Fourier Transforms (FFTs) of data held in Numeric arrays. FFT can wrap either the well-known FFTPACK Fortran-coded library or the compatible C-coded fftpack library.

LinearAlgebra

LinearAlgebra supplies Python-callable functions, operating on data held in Numeric arrays, that wrap either the well-known LAPACK Fortran-coded library or the compatible C-coded lapack_lite library. LinearAlgebra lets you invert matrices, solve linear systems, compute eigenvalues and eigenvectors, perform singular value decomposition, and least-squares-solve overdetermined linear systems.

RandomArray

RandomArray supplies fast, high-quality pseudo-random number generators, using various random distributions, that work with Numeric arrays.

MA

MA supports masked arrays (i.e., arrays that can have missing or invalid values). MA supplies a large subset of Numeric's functionality, albeit sometimes at reduced speed. The extra functionality of MA is the ability to associate to each array an optional mask, an auxiliary array of False and True, where True indicates array elements that are missing, unknown, or invalid. Computations propagate masks, and you can turn masked arrays into plain Numeric ones by using a fill-in value for invalid elements. MA is widely applicable because experimental data quite often has missing or inapplicable elements. Furthermore, when you need to extend or specialize some aspect of Numeric's behavior for your application's purposes, it often turns out to be simplest and most effective to start with MA's sources rather than with Numeric's. The latter are often quite hard to understand and modify, due to the extreme degree of optimization applied to them over the years.

 Part I: Getting Started with Python
 Part II: Core Python Language and Built-ins
 Part IV: Network and Web Programming
 Part V: Extending and Embedding