kopia lustrzana https://github.com/animator/learn-python
Create Intro_SciPy.md
rodzic
229b2a24a4
commit
bc4525a817
|
@ -0,0 +1,136 @@
|
|||
# Introduction to SciPy
|
||||
#### Python has a powerful library known as SciPy that is used for scientific and technical computing. It functions by extending the capabilities of NumPy and providing numerous operations for numerical data. Although the same library, SciPy is divided into distinct sections meant for various scientific computations.
|
||||
## 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.
|
||||
|
||||
|
||||
|
||||
|
Ładowanie…
Reference in New Issue