From 0a63d2e17d69b8d8d3032bf36c51a183dc0e2450 Mon Sep 17 00:00:00 2001 From: Niyonika Gaur <83643952+niyonikagaur@users.noreply.github.com> Date: Fri, 17 May 2024 23:59:25 +0530 Subject: [PATCH] Installation_of_Scipy_&_its_key_uses.md --- .../Installation_of_Scipy_&_its_key_uses.md | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 contrib/scipy/Installation_of_Scipy_&_its_key_uses.md diff --git a/contrib/scipy/Installation_of_Scipy_&_its_key_uses.md b/contrib/scipy/Installation_of_Scipy_&_its_key_uses.md new file mode 100644 index 0000000..33232dc --- /dev/null +++ b/contrib/scipy/Installation_of_Scipy_&_its_key_uses.md @@ -0,0 +1,130 @@ +## Installation of Scipy +### Install using the command: +#### C:\Users\Your Name>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: +##### 1. CSC: Compressed Sparse Column, it is used for efficient math functions and for column slicing +##### 2. 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.