
- SciPy - Home
- SciPy - Introduction
- SciPy - Environment Setup
- SciPy - Basic Functionality
- SciPy - Relationship with NumPy
- SciPy Clusters
- SciPy - Clusters
- SciPy - Hierarchical Clustering
- SciPy - K-means Clustering
- SciPy - Distance Metrics
- SciPy Constants
- SciPy - Constants
- SciPy - Mathematical Constants
- SciPy - Physical Constants
- SciPy - Unit Conversion
- SciPy - Astronomical Constants
- SciPy - Fourier Transforms
- SciPy - FFTpack
- SciPy - Discrete Fourier Transform (DFT)
- SciPy - Fast Fourier Transform (FFT)
- SciPy Integration Equations
- SciPy - Integrate Module
- SciPy - Single Integration
- SciPy - Double Integration
- SciPy - Triple Integration
- SciPy - Multiple Integration
- SciPy Differential Equations
- SciPy - Differential Equations
- SciPy - Integration of Stochastic Differential Equations
- SciPy - Integration of Ordinary Differential Equations
- SciPy - Discontinuous Functions
- SciPy - Oscillatory Functions
- SciPy - Partial Differential Equations
- SciPy Interpolation
- SciPy - Interpolate
- SciPy - Linear 1-D Interpolation
- SciPy - Polynomial 1-D Interpolation
- SciPy - Spline 1-D Interpolation
- SciPy - Grid Data Multi-Dimensional Interpolation
- SciPy - RBF Multi-Dimensional Interpolation
- SciPy - Polynomial & Spline Interpolation
- SciPy Curve Fitting
- SciPy - Curve Fitting
- SciPy - Linear Curve Fitting
- SciPy - Non-Linear Curve Fitting
- SciPy - Input & Output
- SciPy - Input & Output
- SciPy - Reading & Writing Files
- SciPy - Working with Different File Formats
- SciPy - Efficient Data Storage with HDF5
- SciPy - Data Serialization
- SciPy Linear Algebra
- SciPy - Linalg
- SciPy - Matrix Creation & Basic Operations
- SciPy - Matrix LU Decomposition
- SciPy - Matrix QU Decomposition
- SciPy - Singular Value Decomposition
- SciPy - Cholesky Decomposition
- SciPy - Solving Linear Systems
- SciPy - Eigenvalues & Eigenvectors
- SciPy Image Processing
- SciPy - Ndimage
- SciPy - Reading & Writing Images
- SciPy - Image Transformation
- SciPy - Filtering & Edge Detection
- SciPy - Top Hat Filters
- SciPy - Morphological Filters
- SciPy - Low Pass Filters
- SciPy - High Pass Filters
- SciPy - Bilateral Filter
- SciPy - Median Filter
- SciPy - Non - Linear Filters in Image Processing
- SciPy - High Boost Filter
- SciPy - Laplacian Filter
- SciPy - Morphological Operations
- SciPy - Image Segmentation
- SciPy - Thresholding in Image Segmentation
- SciPy - Region-Based Segmentation
- SciPy - Connected Component Labeling
- SciPy Optimize
- SciPy - Optimize
- SciPy - Special Matrices & Functions
- SciPy - Unconstrained Optimization
- SciPy - Constrained Optimization
- SciPy - Matrix Norms
- SciPy - Sparse Matrix
- SciPy - Frobenius Norm
- SciPy - Spectral Norm
- SciPy Condition Numbers
- SciPy - Condition Numbers
- SciPy - Linear Least Squares
- SciPy - Non-Linear Least Squares
- SciPy - Finding Roots of Scalar Functions
- SciPy - Finding Roots of Multivariate Functions
- SciPy - Signal Processing
- SciPy - Signal Filtering & Smoothing
- SciPy - Short-Time Fourier Transform
- SciPy - Wavelet Transform
- SciPy - Continuous Wavelet Transform
- SciPy - Discrete Wavelet Transform
- SciPy - Wavelet Packet Transform
- SciPy - Multi-Resolution Analysis
- SciPy - Stationary Wavelet Transform
- SciPy - Statistical Functions
- SciPy - Stats
- SciPy - Descriptive Statistics
- SciPy - Continuous Probability Distributions
- SciPy - Discrete Probability Distributions
- SciPy - Statistical Tests & Inference
- SciPy - Generating Random Samples
- SciPy - Kaplan-Meier Estimator Survival Analysis
- SciPy - Cox Proportional Hazards Model Survival Analysis
- SciPy Spatial Data
- SciPy - Spatial
- SciPy - Special Functions
- SciPy - Special Package
- SciPy Advanced Topics
- SciPy - CSGraph
- SciPy - ODR
- SciPy Useful Resources
- SciPy - Reference
- SciPy - Quick Guide
- SciPy - Cheatsheet
- SciPy - Useful Resources
- SciPy - Discussion
SciPy Cheatsheet
The SciPy cheatsheet provides the quick reference to all its fundamental topics. This is free open−source library that used for various tasks such as signal processing, statistics, linear algebra, and data analysis. Go through this cheat sheet and learn the SciPy library of Python.
Table of Content
1. Introduction to SciPy
In the introduction section, we will cover the basic definition, installation and learn how to import the SciPy.
i. What is SciPy?
The SciPy is an open-source library of Python that can be used for scientific and technical computing.
ii. Installation
To install the SciPy library of Python, use the following command −
pip install scipy
iii. Importing SciPy
To import the SciPy, use the following lines of code −
import scipy import numpy as np
2. Special Functions (scipy.special)
The scipy.special module provides a collection of mathematical functions such as gamma functions, beta functions, and error functions.
i. Common Special Functions
The common special function are mostly used in statistics, physics and engineering applications.
from scipy import special # Gamma function print(special.gamma(5)) # Beta function print(special.beta(2, 3)) # Error function print(special.erf(1.0))
ii. Bessel Functions
In SciPy, Bessel functions are reference through scipy.special that calculate the specific order and argument.
# Bessel function of the first kind from scipy import special print(special.jn(1, 2.5))
3. Linear Algebra (scipy.linalg)
The scipy.linalg module provides functions for matrix operations such as solving linear equations, and computing determinants.
i. Solving Linear Equations
To solve the linear equation in SciPy, use the solve function.
from scipy.linalg import solve import numpy as np A = np.array([[3, 1], [1, 2]]) b = np.array([9, 8]) x = solve(A, b) print(x)
ii. Matrix Operations
In SciPy, matrix operations can be implemented as 2D list or 2D array. You can perform various operations in matrices such as addition, subtraction, transpose, and inversion of a matrix.
from scipy.linalg import inv import numpy as np matrix = np.array([[1, 2], [3, 4]]) # Inverse of a matrix print(inv(matrix))
4. Optimization (scipy.optimize)
The scipy.optimize module is used for finding the minimum, maximum, and roots of functions.
i. Minimization of a Function
Minimizing a function is useful in machine learning and mathematical modeling.
from scipy.optimize import minimize def func(x): return x**2 + 5*x + 6 result = minimize(func, x0=0) # Minimum value print(result.x)
ii. Finding Roots of Equations
In SciPy, finding the roots methods helps to locate zeros.
from scipy.optimize import root def equation(x): return x**2 - 4 sol = root(equation, x0=0) print(sol.x) # Root of the equation
iii. Curve Fitting (curve_fit)
Curve fitting is used to approximate data using a given function.
from scipy.optimize import curve_fit import numpy as np def func(x, a, b): return a * x + b x_data = np.array([1, 2, 3, 4, 5]) y_data = np.array([2, 4, 6, 8, 10]) params, _ = curve_fit(func, x_data, y_data) # Fitted parameters print(params)
5. Integration (scipy.integrate)
The SciPy integration are defined using numerical methods for calculating definite integrals which contains single, double and triple integrals as well as differential equations.
i. Definite and Indefinite Integrals (quad, dblquad)
The quad function measures the definite integral of a function over a given range, while dblquad is used for double integrals.
from scipy.integrate import quad, dblquad # Single integral result, error = quad(lambda x: x**2, 0, 2) print(result) # Double integral double_result, error = dblquad(lambda y, x: x * y, 0, 1, lambda x: 0, lambda x: 2) print(double_result)
ii. Solving Ordinary Differential Equations (odeint, solve_ivp)
The odeint and solve_ivp functions are used to solve ordinary differential equations (ODEs).
from scipy.integrate import odeint, solve_ivp import numpy as np # Define the function dy/dt = -2y def model(y, t): return -2 * y t = np.linspace(0, 5, 100) # Time points y0 = 1 # Initial condition # ODE using odeint y = odeint(model, y0, t) # Print first few values print(y[:5]) # ODE using solve_ivp solution = solve_ivp(model, [0, 5], [y0], t_eval=t) # Print first some values print(solution.y[0][:5])
6. Interpolation (scipy.interpolate)
The interpolation calculates the value between two known values.
i. 1D Interpolation (interp1d)
The interp1d function is used for interpolating 1D data.
from scipy.interpolate import interp1d import numpy as np # data points x = np.array([0, 1, 2, 3, 4]) y = np.array([0, 2, 4, 6, 8]) # Create an interpolation function f = interp1d(x, y, kind='linear') # Interpolated value at x = 2.5 print(f(2.5))
ii. 2D and Multivariate Interpolation
The griddata function is used for interpolating 2D and multivariate data.
from scipy.interpolate import griddata import numpy as np # data points points = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) values = np.array([1, 2, 3, 4]) # query point for interpolation query_point = np.array([[0.5, 0.5]]) # interpolation result = griddata(points, values, query_point, method='cubic') # Interpolated value at (0.5, 0.5) print(result)
7. Statistics (scipy.stats)
The scipy.stats module provides statistical functions, including mean, variance, and hypothesis testing.
ii. Descriptive Statistics (Mean, Median, Variance)
You can compute mean, median, and variance using SciPy.
# mean mean_value = stats.tmean(data) # median median_value = stats.tmedian(data) # variance variance_value = stats.tvar(data)
iii. Hypothesis Testing (t-test, chi-square test)
The hypothetical testing determine the statistical method to test about a population parameter using sample data.
from scipy.stats import ttest_1samp, chi2_contingency import numpy as np data = np.array([1, 2, 3, 4, 5, 6]) t_stat, p_value = ttest_1samp(data, popmean=3.5) print("T-test p-value:", p_value)
8. Fast Fourier Transform (FFT) (scipy.fft)
The Fast Fourier Transform (FFT) is an efficient method for calculating the Discrete Fourier Transform (DFT) of a signal and its inverse.
i. 1D and 2D Fourier Transforms
The Fast Fourier Transform (FFT) is an algorithm to operates the discrete Fourier transform (DFT) and its inverse. The 1D FFT is used for 1−dimensional data, and the 2D FFT is applied to two−dimensional data such as images.
from scipy.fft import fft, fft2 import numpy as np # 1D Fourier Transform x = np.array([0, 1, 2, 3, 4, 5, 6, 7]) fft_result_1d = fft(x) print("1D FFT result:\n", fft_result_1d) # 2D Fourier Transform x_2d = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) fft_result_2d = fft2(x_2d) print("2D FFT result:\n", fft_result_2d)
ii. Inverse Fourier Transform
In SciPy, inverse FFT transforms the frequency−domain data back to the time or spatial domain.
import numpy as np from scipy.fft import fft, ifft, fft2, ifft2 # 1D array data_1d = np.array([1, 2, 3, 4]) # Fourier Transform fft_result_1d = fft(data_1d) # Inverse Fourier Transform ifft_result_1d = ifft(fft_result_1d) print("1D Inverse FFT result:\n", ifft_result_1d) # 2D array data_2d = np.array([[1, 2], [3, 4]]) # 2D Fourier Transform fft_result_2d = fft2(data_2d) # 2D Inverse Fourier Transform ifft_result_2d = ifft2(fft_result_2d) print("2D Inverse FFT result:\n", ifft_result_2d)
9. Signal Processing (scipy.signal)
In SciPy, signal processing is a part of python library that provides the tools like filtering, Fourier transform and wavelets.
i. Filtering (Low-pass, High-pass)
In SciPy, filtering helps in removing unwanted noise or frequencies from a signal.
from scipy.signal import butter, filtfilt import numpy as np # create a low-pass filter def butter_lowpass(cutoff, fs, order=5): nyquist = 0.5 * fs normal_cutoff = cutoff / nyquist b, a = butter(order, normal_cutoff, btype='low', analog=False) return b, a # sample signal fs = 100 signal = np.sin(2 * np.pi * 5 * np.linspace(0, 1, fs)) # apply filter # 10 Hz cutoff frequency b, a = butter_lowpass(10, fs) filtered_signal = filtfilt(b, a, signal)
ii. Convolution and Correlation
In SciPy, convolution and correlation are used for signal processing operations such as filtering and feature detection.
from scipy.signal import convolve, correlate import numpy as np x = np.array([1, 2, 3]) h = np.array([0, 1, 0.5]) conv_result = convolve(x, h, mode='full') corr_result = correlate(x, h, mode='full') # Convolution result print(conv_result) # Correlation result print(corr_result)
iii. Peak Detection
Peak detection is used to find local maxima from the signal.
from scipy.signal import find_peaks import numpy as np signal = np.array([0, 1, 0, 2, 1, 3, 1, 0]) peaks, _ = find_peaks(signal, height=1) # Indices of peaks print(peaks)
10. Image Processing (scipy.ndimage)
Image Processing in SciPy defines the signals in the form of pixel data. This is also known as image analysis.
i. Image Filtering (Gaussian, Median)
SciPy provides various image filters such as Gaussian and Median filters for the smooth images.
from scipy.ndimage import gaussian_filter, median_filter import numpy as np image = np.random.random((5, 5)) gaussian_filtered = gaussian_filter(image, sigma=1) median_filtered = median_filter(image, size=2) # Gaussian filtered image print(gaussian_filtered) # Median filtered image print(median_filtered)
ii. Morphological Operations
Morphological operations are used for image processing tasks such as edge detection and noise removal.
from scipy.ndimage import binary_dilation, binary_erosion import numpy as np binary_image = np.random.randint(0, 2, (5, 5)) dilated_image = binary_dilation(binary_image) eroded_image = binary_erosion(binary_image) print(dilated_image) # Dilated image print(eroded_image) # Eroded image
11. Sparse Matrices (scipy.sparse)
A sparse matrices are the matrix by containing most zero elements.
i. Creating Sparse Matrices
Sparse matrices store only nonzero elements to save memory.
from scipy.sparse import csr_matrix import numpy as np dense_matrix = np.array([[0, 0, 1], [1, 0, 0], [0, 2, 0]]) sparse_matrix = csr_matrix(dense_matrix) print(sparse_matrix)
ii. Sparse Matrix Operations
This is like a matrix multiplication and the conversion can be performed on sparse matrices.
# Transpose sparse_matrix_T = sparse_matrix.transpose() # Matrix multiplication sparse_matrix_dot = sparse_matrix.dot(sparse_matrix_T) print(sparse_matrix_dot)
12. File I/O (scipy.io)
Reading / Writing MATLAB Files
MATLAB files (.mat) can be used to read and write files using SciPy.
from scipy.io import savemat, loadmat import numpy as np data = {'array': np.array([1, 2, 3])} # Save to MATLAB file savemat("data.mat", data) # Load MATLAB file loaded_data = loadmat("data.mat") print(loaded_data)
ii. Reading / Writing WAV Files
SciPy provides functions to read and write audio files in WAV format.
from scipy.io import wavfile import numpy as np # Writing a WAV file fs = 44100 wavfile.write("output.wav", fs, np.random.randint(-32768, 32767, 44100, dtype=np.int16)) # Reading a WAV file rate, data = wavfile.read("output.wav") print(rate, data.shape)