3.5 KiB
Installation of Scipy
You can install scipy using the command:
$ pip install scipy
You can also use a Python distribution that already has Scipy installed like Anaconda, or Spyder.
Importing SciPy
from scipy import constants
Key Features of SciPy
1. Numerical Integration
It helps in computing definite or indefinite integrals of functions
from scipy import integrate
#Define the function to integrate
def f(x):
return x**2
#Compute definite integral of f from 0 to 1
result, error = integrate.quad(f, 0, 1)
print(result)
Output
0.33333333333333337
2. Optimization
It can be used to minimize or maximize functions, here is an example of minimizing roots of an equation
from scipy.optimize import minimize
# Define an objective function to minimize
def objective(x):
return x**2 + 10*np.sin(x)
# Minimize the objective function starting from x=0
result = minimize(objective, x0=0)
print(result.x)
Output
array([-1.30644012])
3. Linear Algebra
Solving Linear computations
from scipy import linalg
import numpy as np
# Define a square matrix
A = np.array([[1, 2], [3, 4]])
# Define a vector
b = np.array([5, 6])
# Solve Ax = b for x
x = linalg.solve(A, b)
print(x)
Output
array([-4. , 4.5])
4. Statistics
Performing statistics functions, like here we'll be distributing the data
from scipy import stats
import numpy as np
# Generate random data from a normal distribution
data = stats.norm.rvs(loc=0, scale=1, size=1000)
# Fit a normal distribution to the data
mean, std = stats.norm.fit(data)
5. Signal Processing
To process spectral signals, like EEG or MEG
from scipy import signal
import numpy as np
# Create a signal (e.g., sine wave)
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + 0.5 * np.random.randn(1000)
# Apply a low-pass Butterworth filter
b, a = signal.butter(4, 0.1, 'low')
filtered_signal = signal.filtfilt(b, a, signal)
The various filters applied that are applied here, are a part of signal analysis at a deeper level.
6. Sparse Matrix
The word ' sparse 'means less, i.e., the data is mostly unused during some operation or analysis. So, to handle this data, a Sparse Matrix is created
There are two types of Sparse Matrices:
- CSC: Compressed Sparse Column, it is used for efficient math functions and for column slicing
- CSR: Compressed Sparse Row, it is used for fast row slicing
In CSC format
from scipy import sparse
import numpy as np
data = np.array([[0, 0], [0, 1], [2, 0]])
row_indices = np.array([1, 2, 1])
col_indices = np.array([1, 0, 2])
values = np.array([1, 2, 1])
sparse_matrix_csc = sparse.csc_matrix((values, (row_indices, col_indices)))
In CSR format
from scipy import sparse
import numpy as np
data = np.array([[0, 0], [0, 1], [2, 0]])
sparse_matrix = sparse.csr_matrix(data)
7. Image Processing
It is used to process the images, like changing dimensions or properties. For example, when you're doing a project on medical imaging, this library is mainly used.
from scipy import ndimage
import matplotlib.pyplot as plt
image = plt.imread('path/to/image.jpg')
plt.imshow(image)
plt.show()
# Apply Gaussian blur to the image
blurred_image = ndimage.gaussian_filter(image, sigma=1)
plt.imshow(blurred_image)
plt.show()
The gaussian blur is one of the properties of the ' ndimage ' package in SciPy libraries, it used for better understanding of the image.