What are various sub-packages in Python SciPy library?

To cover different scientific computing domains, SciPy library is organized into various sub-packages. These sub-packages are explained below −

  • Clustering package (scipy.cluster) − This package contains clustering algorithms which are useful in information theory, target detection, compression, communications, and some other areas also. It has two modules namely scipy.cluster.vq and scipy.cluster.hierarchy. As the name entails, the first module i.e., vq module supports only vector quantization and k-meansalgorithms. Whereas the second module i.e., hierarchy module provides functions for agglomerative and hierarchical clustering.
  • Constants(scipy.constants) − It contains mathematical and physical constants. Mathematical constants include pi, golden and golden_ratio. Physical constants include c, speed_of_light, planck, gravitational_constant, etc.
  • Legacy discrete Fourier transforms(scipy.fft) − This submodule is used for Fast Fourier Transforms (FFTs) and now considered as legacy.

  • Integration and ODEs(scipy.integrate) − This SciPy submodule is used for integrating functions by using function objects and fixed samples. It is also used to solve initial value problems for ODE systems.

  • Interpolation(scipy.interpolate) − This is a sub package for objects used in interpolation. The objects in this sub package are spline functions and classes, 1-D and multidimensional interpolation classes, Lagrange and Taylor polynomial interpolators.

  • Input and Output(scipy.io) − This SciPy sub-package contains modules, classes and functions to read data from and write data to various file formats such as MATLAB files, IDL files, Matrix Market files, Unformatted Fortran files, Wav sound files, Arff files.

  • Linear Algebra(scipy.linalg) − As the name entails, this sub-package contains Linear Algebra functions. It includes the basic functions, functions to solve Eigenvalue problems, Decompositions, Matrix functions, Special matrix functions, Matrix equation solver functions, and low-level routines.

  • Multidimensional image processing (scipy.ndimage) − This SciPy sub-package contains various functions such as Filters, Fourier Filters, Interpolation, Measurements, and Morphology used for multidimensional image processing.

  • Orthogonal distance regression (scipy.odr) − This sub-package contains various functions to calculate orthogonal distance regression (ODR).

  • Optimization and root finding (scipy.optimize) − This SciPy sub module provides us the functions for minimizing or maximizing objective functions. It also includes solvers for nonlinear problems, linear programming, root findings, and curve fitting.

  • Signal processing(scipy.signal) − As name entails, this sub-package contains various functions used for signal processing. These functions include Convolution, B-splines, Filtering, Filter design, Matlab-style IIR filter design, Waveforms, Wavelets, etc.

  • Sparse matrices (scipy.sparse) − It is SciPy 2-dimensional sparse matrix package for numeric data. It contains various functions to build sparse matrices.

  • Spatial algorithms and data structures (scipy.spatial) − Spatial transformations are contained in scipy.spatial.transform submodule. It is mainly used for nearest neighbor algorithms.

  • Special functions (scipy.special) − It contains functions such as Airy functions, Elliptic functions, Bessel functions, Struve functions, Raw statistical functions, information theory functions, Gamma functions, Legendre functions, etc.

  • Statistical functions (scipy.stats) − This sub-module of SciPy is having a large number of probability distributions and a growing library of statistical functions.