Aller au contenu

Tutoriel SciPy

Bienvenue dans notre guide complet sur l'utilisation de SciPy pour la programmation Python ! SciPy est une bibliothèque Python open-source utilisée pour le calcul scientifique et technique. Elle est largement utilisée par les scientifiques, ingénieurs, mathématiciens et analystes de données pour effectuer des calculs complexes, des analyses de données et des visualisations. Dans ce guide, nous explorerons les capacités de SciPy et apprendrons à l'utiliser efficacement pour diverses applications scientifiques et techniques.

Premiers pas avec SciPy

Avant de plonger dans les détails de SciPy, commençons par l'installer. SciPy peut être installé via pip, l'installateur de paquets pour Python. Exécutez simplement la commande suivante dans votre terminal :


console
pip install scipy

Une fois SciPy installé, nous pouvons l'importer dans notre script Python à l'aide de la commande suivante :

importer scipy dans un projet Python

python
import scipy

Opérations numériques avec SciPy

L'une des fonctionnalités principales de SciPy est sa capacité à effectuer des opérations numériques sur des tableaux et des matrices. NumPy est une bibliothèque distincte et fondamentale pour le calcul sur tableaux, sur laquelle SciPy s'appuie. Ensemble, elles offrent des outils puissants pour travailler avec des tableaux et des matrices en Python. Explorons certaines des fonctions SciPy les plus couramment utilisées pour les opérations numériques :

Algèbre linéaire

SciPy fournit un ensemble complet de fonctions pour effectuer des opérations d'algèbre linéaire sur des matrices. Nous pouvons réaliser des opérations telles que la multiplication de matrices, l'inversion de matrices, le calcul des valeurs et vecteurs propres, et la décomposition en valeurs singulières à l'aide de SciPy. Voici quelques exemples :

Opérations d'algèbre linéaire avec numpy et scipy en Python

python
import numpy as np
from scipy import linalg

# Create a 2x2 matrix
a = np.array([[1, 2], [3, 4]])

# Calculate the determinant of the matrix
det = linalg.det(a)
print(det)  # Output: -2.0

# Calculate the inverse of the matrix
inv = linalg.inv(a)
print(inv)  # Output: [[-2.   1. ], [ 1.5 -0.5]]

# Calculate the eigenvalues and eigenvectors of the matrix
eigenvalues, eigenvectors = linalg.eig(a)
print(eigenvalues)  # Output: [ 5.37228132 -0.37228132]
print(eigenvectors)  # Output: [[-0.82456484 -0.41597356]
#                 [ 0.56576746 -0.90983064]]

# Calculate the singular value decomposition of the matrix
u, s, v = linalg.svd(a)
print(u)  # Output: [[-0.82456484 -0.56576746]
#                 [ 0.56576746 -0.82456484]]
print(s)  # Output: [5.4649857  0.36596619]
print(v)  # Output: [[-0.57604844 -0.81741556]
#                 [-0.81741556  0.57604844]]

Intégration et différentiation

SciPy propose des fonctions pour effectuer l'intégration et la différentiation numériques de fonctions. Nous pouvons utiliser ces fonctions pour calculer des intégrales, des dérivées et des gradients de fonctions. Voici quelques exemples :

Intégration et différentiation numériques de fonctions en Python

python
import numpy as np
from scipy import integrate
from scipy.optimize import approx_fprime

# Define a function to integrate
def f(x):
    return x ** 2 + 2 * x + 1

# Calculate the definite integral of the function from 0 to 1
result, error = integrate.quad(f, 0, 1)
print(result)  # Output: 2.3333333333333335

# Define a function to differentiate
def g(x):
    return np.sin(x)

# Calculate the derivative of the function at x=0
result = approx_fprime([0.0], lambda x: g(x[0]), 1e-8)
print(result[0])  # Output: 1.0

Optimisation

SciPy offre une large gamme de fonctions d'optimisation pour trouver le minimum ou le maximum d'une fonction. Nous pouvons utiliser ces fonctions pour optimiser notre code et améliorer son efficacité. Voici quelques exemples :

Fonctions d'optimisation scipy en Python

python
from scipy import optimize

# Define a function to minimize
def f(x):
    return x ** 2 + 2 * x + 1

# Find the minimum of the function
result = optimize.minimize(f, 0)
print(result)  # Output: OptimizeResult object containing success status, minimum value, and optimal parameters

# Define a function to maximize
def g(x):
    return -x ** 2 - 2 * x - 1

# Find the maximum of the function by minimizing the negative function
result = optimize.minimize_scalar(g)
print(result)  # Output: OptimizeResult object containing success status, maximum value, and optimal parameter

Visualisation avec SciPy

Matplotlib est une bibliothèque distincte et très utilisée pour la visualisation de données, qui fonctionne de manière transparente avec SciPy et NumPy. Explorons certaines des fonctions Matplotlib les plus couramment utilisées pour la visualisation.

Graphiques

Nous pouvons utiliser le module matplotlib pour créer différents types de graphiques, tels que des courbes, des nuages de points et des graphiques en barres. Voici quelques exemples :

Différents types de graphiques avec matplotlib en Python

python
import numpy as np
import matplotlib.pyplot as plt

# Create a dataset
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Create a line plot of the data
plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()  # Displays a line plot of the sine wave

# Create a scatter plot of the data
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()  # Displays a scatter plot of the sine wave data points

# Create a bar plot of the data
x = np.arange(3)
y = np.array([3, 7, 4])
plt.bar(x, y)
plt.xticks(x, ['A', 'B', 'C'])
plt.title('Bar Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()  # Displays a bar chart comparing values A, B, and C

Traitement d'images

SciPy fournit un module appelé ndimage qui nous permet d'effectuer diverses opérations sur des images, telles que le filtrage, la détection de contours et la segmentation. Voici quelques exemples :

Utiliser le module ndimage de SciPy en Python pour effectuer diverses opérations sur des images

python
from scipy import ndimage
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

# Load an image
image = mpimg.imread('image.jpg')

# Apply a Gaussian filter to the image
filtered_image = ndimage.gaussian_filter(image, sigma=2)

# Detect edges in the image
edge_image = ndimage.sobel(filtered_image)

# Perform segmentation on the image
threshold = np.mean(filtered_image)
segmented_image = filtered_image > threshold

# Show the original image
plt.subplot(2, 2, 1)
plt.imshow(image)
plt.title('Original Image')

# Show the filtered image
plt.subplot(2, 2, 2)
plt.imshow(filtered_image)
plt.title('Filtered Image')

# Show the edge image
plt.subplot(2, 2, 3)
plt.imshow(edge_image)
plt.title('Edge Image')

# Show the segmented image
plt.subplot(2, 2, 4)
plt.imshow(segmented_image)
plt.title('Segmented Image')

plt.show()  # Displays a 2x2 grid of the original, filtered, edge-detected, and segmented images

Conclusion

SciPy est une bibliothèque essentielle pour le calcul scientifique et technique en Python. Elle propose une large gamme de fonctions pour les opérations numériques, l'optimisation et la visualisation. Dans ce guide, nous avons couvert certaines des fonctions SciPy les plus couramment utilisées et fourni des exemples d'utilisation. Grâce à ces connaissances, vous pouvez désormais commencer à utiliser SciPy dans vos propres projets et tirer parti de ses puissantes capacités.

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.