Tutoriel SciPy: Qu'est-ce que Python SciPy et comment l'utiliser?



SciPy est une bibliothèque Python utilisée pour résoudre des problèmes scientifiques et mathématiques. NumPy contre SciPy. Basique, spécial, intégration, optimisation, etc. avec des exemples.

Les mathématiques traitent d'un grand nombre de concepts qui sont très importants mais en même temps complexes et chronophages. cependant, fournit la bibliothèque SciPy à part entière qui résout ce problème pour nous. Dans ce didacticiel SciPy, vous apprendrez à utiliser cette bibliothèque avec quelques fonctions et leurs exemples.

Avant de poursuivre, jetez un œil à tous les sujets abordés dans cet article:





Alors, commençons. :)

Qu'est-ce que SciPy?

SciPy est une bibliothèque Python open-source utilisée pour résoudre des problèmes scientifiques et mathématiques. Il est construit sur le et permet à l'utilisateur de manipuler et de visualiser des données avec un large éventail de commandes de haut niveau. Comme mentionné précédemment, SciPy s'appuie sur NumPy et donc si vous importez SciPy, il n'est pas nécessaire d'importer NumPy.



NumPy vs SciPy

NumPy et SciPy sont utilisé pour l'analyse mathématique et numérique utilisée. NumPy contient des données de tableau et des opérations de base telles que le tri, l'indexation, etc. alors que SciPy se compose de tout le code numérique. Bien que NumPy propose un certain nombre de qui peut aider à résoudre l'algèbre linéaire, les transformées de Fourier, etc., SciPy est la bibliothèque qui contient en fait des versions complètes de ces fonctions ainsi que de nombreuses autres. Cependant, si vous effectuez une analyse scientifique à l'aide de Python, vous devrez installer à la fois NumPy et SciPy puisque SciPy s'appuie sur NumPy.

Sous-packages dans SciPy:

SciPy a un certain nombre de sous-packages pour divers calculs scientifiques qui sont présentés dans le tableau suivant:

NomLa description
grappeAlgorithmes de clustering
constantesConstantes physiques et mathématiques
fftpackRoutines de transformation de Fourier rapide
intégrerIntégration et solveurs d'équations différentielles ordinaires
interpolerInterpolation et lissage des splines
jeEntrée et sortie
linalgAlgèbre linéaire
je voleTraitement d'image en N dimensions
odrRégression de distance orthogonale
optimiserOptimisation et routines de recherche de racines
signalTraitement de signal
clairseméMatrices clairsemées et routines associées
spatialStructures de données spatiales et algorithmes
spécialFonctions spéciales
StatistiquesDistributions et fonctions statistiques

Cependant, pour une description détaillée, vous pouvez suivre le documentation officielle .



Ces packages doivent être importés exclusivement avant de les utiliser. Par exemple:

à partir du cluster d'importation scipy

Avant d’examiner chacune de ces fonctions en détail, examinons d’abord les fonctions communes à la fois dans NumPy et SciPy.

Les fonctions de base:

Interaction avec NumPy:

SciPy s'appuie sur NumPy et vous pouvez donc utiliser les fonctions NumPy lui-même pour gérer les tableaux. Pour connaître en détail ces fonctions, vous pouvez simplement utiliser les fonctions help (), info () ou source ().

Aidez-moi():

Pour obtenir des informations sur n'importe quelle fonction, vous pouvez utiliser le Aidez-moi() fonction. Cette fonction peut être utilisée de deux manières:

  • sans aucun paramètre
  • en utilisant des paramètres

Voici un exemple qui montre les deux méthodes ci-dessus:

différence entre c c ++ et java
à partir de l'aide du cluster scipy import (cluster) # with parameter help () #without parameter

Lorsque vous exécutez le code ci-dessus, la première aide () renvoie les informations sur le grappe sous-module. La deuxième aide () demande à l'utilisateur de saisir le nom de tout module, mot-clé, etc. pour lequel l'utilisateur souhaite rechercher des informations. Pour arrêter l'exécution de cette fonction, tapez simplement «quitter» et appuyez sur Entrée.

Info():

Cette fonction renvoie des informations sur le , modules, etc.

scipy.info (cluster)

la source():

Le code source n'est renvoyé que pour les objets écrits en . Cette fonction ne renvoie pas d'informations utiles dans le cas où les méthodes ou les objets sont écrits dans un autre langage tel que C. Cependant, si vous souhaitez utiliser cette fonction, vous pouvez le faire comme suit:

scipy.source (cluster)

Fonctions spéciales:

SciPy fournit un certain nombre de fonctions spéciales qui sont utilisées en physique mathématique telles que l'elliptique, fonctions de confort, gamma, bêta, etc.Pour rechercher toutes les fonctions, vous pouvez utiliser la fonction help () comme décrit précédemment.

Fonctions exponentielles et trigonométriques:

Le package de fonctions spéciales de SciPy fournit un certain nombre de fonctions grâce auxquelles vous pouvez trouver des exposants et résoudre des problèmes trigonométriques.

Prenons l'exemple suivant:

EXEMPLE:

depuis scipy import special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( ré)

PRODUCTION:

1000,0
8,0
1.0
0,7071067811865475

Il existe de nombreuses autres fonctions présentes dans le package des fonctions spéciales de SciPy que vous pouvez essayer par vous-même.

Fonctions d'intégration:

SciPy fournit un certain nombre de fonctions pour résoudre les intégrales. De l'intégrateur différentiel ordinaire à l'utilisation de règles trapézoïdales pour calculer des intégrales, SciPy est un entrepôt de fonctions permettant de résoudre tous les types de problèmes d'intégrales.

Intégration générale:

SiPy fournit une fonction nommée quad pour calculer l'intégrale d'une fonction qui a une variable. Les limites peuvent être ± & infini(± inf) pour indiquer des limites infinies. La syntaxe de la fonction quad () est la suivante:

SYNTAXE:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, limit = 50, points = None, weight = None, wvar = None, wopts = None , maxp1 = 50, limlst = 50)

Ici, la fonction sera intégrée entre les limites a et b (peut aussi être infinie).

EXEMPLE:

depuis scipy import special depuis scipy import integrer a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

Dans l'exemple ci-dessus, la fonction «a» est évaluée entre les limites 0, 1. Lorsque ce code est exécuté, vous verrez la sortie suivante.

PRODUCTION:

(3.9086503371292665, 4.3394735994897923e-14)

Double fonction intégrale:

SciPy fournit dblquad qui peut être utilisé pour calculer des intégrales doubles. Une double intégrale, comme beaucoup d'entre nous le savent, se compose de deux variables réelles. La fonction dblquad () prendra la fonction à intégrer comme son paramètre avec 4 autres variables qui définissent les limites et les fonctions mourir et dx.

EXEMPLE:

depuis scipy import integrer a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integrer.dblquad (a, 0, 2, b, c)

PRODUCTION:

-1,3333333333333335, 1,4802973661668755e-14)

SciPy fournit diverses autres fonctions pour évaluer les intégrales triples, les intégrales n, les intégrales Romberg, etc. que vous pouvez explorer plus en détail. Pour trouver tous les détails sur les fonctions requises, utilisez la fonction d'aide.

Fonctions d'optimisation:

Le scipy.optimize fournit un certain nombre d'algorithmes d'optimisation couramment utilisés qui peuvent être vus en utilisant la fonction d'aide.

Il se compose essentiellement des éléments suivants:

  • Minimisation sans contrainte et contrainte des fonctions scalaires multivariées, c'est-à-dire minimiser (par exemple BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc.)
  • Routines d'optimisation globale (par exemple, évolution_différentielle, recuit_duel, etc.)
  • Minimisation des moindres carrés et ajustement des courbes (par exemple, les moindres carrés, l'ajustement de la courbe, etc.)
  • Minimiseurs de fonctions scalaires univariées et recherche de racines (par exemple minimiser_scalar et root_scalar)
  • Solveurs de systèmes d'équations multivariées utilisant des algorithmes tels que l'hybride Powell, Levenberg-Marquardt.

Fonction Rosenbrook:

Fonction Rosenbrook ( rosen ) est un problème de test utilisé pour les algorithmes d'optimisation basés sur le gradient. Il est défini comme suit dans SciPy:

Tutoriel Rosen-Scipy-EdurekaEXEMPLE:

import numpy as np depuis scipy.optimize import rosen a = 1.2 * np.arange (5) rosen (a)

PRODUCTION: 7371.0399999999945

Nelder-Mead:

LaNelder–La méthode Mead est une méthode numérique souvent utilisée pour trouver le min / max d'une fonction dans un espace multidimensionnel. Dans l'exemple suivant, la méthode minimiser est utilisée avec l'algorithme Nelder-Mead.

EXEMPLE:

à partir de scipy import Optimize a = [2.4, 1.7, 3.1, 2.9, 0.2] b = Optimize.minimize (Optimize.rosen, a, method = 'Nelder-Mead') b.x

PRODUCTION: tableau ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

Fonctions d'interpolation:

Dans le domaine de l'analyse numérique, l'interpolation fait référence à la construction de nouveaux points de données au sein d'un ensemble de points de données connus. La bibliothèque SciPy se compose d'un sous-paquet nommé scipy.interpolate qui se compose defonctions et classes de spline, classes d'interpolation unidimensionnelle et multidimensionnelle (univariée et multivariée), etc.

Interpolation univariée:

L'interpolation univariée est essentiellement une zone d'ajustement de courbe quitrouve la courbe qui fournit un ajustement exact à une série de points de données bidimensionnels. SciPy fournit interp1d fonction qui peut être utilisée pour produire une interpolation univariée.

EXEMPLE:

import matplotlib.pyplot as plt from scipy import interpolate x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # utilise la fonction d'interpolation retournée par `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

PRODUCTION:

Interpolation multivariée:

Interpolation multivariée(spatialinterpolation) est une sorteinterpolationsur les fonctions qui se composent de plusieurs variables. L'exemple suivant montre un exemple de interp2d fonction.
Interpoler sur une grille 2D en utilisant la fonction interp2d (x, y, z) utilisera essentiellement des tableaux x, y, z pour approximer une fonction f: 'z = f (x, y)' et renvoie une fonction dont la méthode d'appel utilise interpolation spline pour trouver la valeur de nouveaux points.
EXEMPLE:

from scipy import interpoler import matplotlib.pyplot as plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpoler.interp2d (x, y, z, kind = 'cubique') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

PRODUCTION:

Fonctions de transformation de Fourier:

L'analyse de Fourier est une méthode qui consiste à exprimer une fonction comme une somme de composants périodiques et à récupérer le signal à partir de ces composants. La fft fonctions peuvent être utilisées pour renvoyertransformée de Fourier discrète d'une séquence réelle ou complexe.

EXEMPLE:

de scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = fft (x) print (y)

PRODUCTION: [ 6.+0.j -2.+2.j -2.+0.j -2.-2.j ]

De même, vous pouvez trouver l'inverse de ceci en utilisant le ifft fonction comme suit:

EXEMPLE:

rom scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) print (y)

PRODUCTION: [1,5 + 0.j -0,5-0,5j -0,5 + 0.j -0,5 + 0,5j]

Fonctions de traitement du signal:

Le traitement du signal traiteanalyser, modifier et synthétiser des signaux tels que le son, les images, etc. SciPy fournit certaines fonctions qui vous permettent de concevoir, filtrer et interpoler des données unidimensionnelles et bidimensionnelles.

Filtration:

En filtrant un signal, vous en supprimez essentiellement les composants indésirables. Pour effectuer un filtrage ordonné, vous pouvez utiliser le order_filter fonction. Cette fonction effectue essentiellement un filtrage ordonné sur un tableau. La syntaxe de cette fonction est la suivante:

SYNTAXE:
order_filter (a, domaine, rang)

a = tableau d'entrée à N dimensions

domain = mask tableau ayant le même nombre de dimensions que `a`

rank = nombre non négatif qui sélectionne les éléments de la liste après son tri (0 est le plus petit suivi de 1…)

EXEMPLE:

à partir du signal d'importation scipy x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

PRODUCTION:

[[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

comment utiliser swing java

[[0. 1. 2. 3. 0.]
[5. 6. 7. 8. 3.]
[dix. 11. 12. 13. 8.]
[quinze. 16. 17. 18. 13.]
[vingt. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Formes d'onde:

Le sous-paquet scipy.signal comprend également diverses fonctions qui peuvent être utilisées pour générer des formes d'onde. Une de ces fonctions est gazouiller . Cette fonction est un fgénérateur de cosinus balayé par requency et la syntaxe est la suivante:

SYNTAXE:
chirp (t, f0, t1, f1, method = ’linear’, phi = 0, vertex_zero = True)

où,

EXEMPLE:

à partir de scipy.signal import chirp, spectrogramme import matplotlib.pyplot as plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('time in sec)') plt.show ()

PRODUCTION:

Algèbre linéaire:

L'algèbre linéaire traite des équations linéaires et de leurs représentations à l'aide d'espaces vectoriels et de matrices. SciPy est construit surBibliothèques ATLAS LAPACK et BLAS et estextrêmement rapide pour résoudre les problèmes liés à l'algèbre linéaire. En plus de toutes les fonctions de numpy.linalg, scipy.linalg fournit également un certain nombre d'autres fonctions avancées. De plus, si numpy.linalg n'est pas utilisé avecSupport ATLAS LAPACK et BLAS, scipy.linalg est plus rapide que numpy.linalg.

Recherche de l'inverse d'une matrice:

Mathématiquement, l'inverse d'une matrice Aest la matriceBtel queAB = Ijeest la matrice d'identité constituée de ceux situés le long de la diagonale principale notéeB = A-un. Dans SciPy, cet inverse peut être obtenu en utilisant le linalg.inv méthode.

EXEMPLE:

import numpy as np depuis scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

PRODUCTION:

[[-0,6 0,4]
[0,8 -0,2]]

Recherche des déterminants:

La valeur dérivée arithmétiquement des coefficients de la matrice est appelée le déterminant d'une matrice carrée. Dans SciPy, cela peut être fait à l'aide d'une fonction la qui a la syntaxe suivante:

SYNTAXE:
det (a, overwrite_a = False, check_finite = True)
où,

a: (M, M) est une matrice carrée

overwrite_a (booléen, facultatif): autorise l'écrasement des données dans un

check_finite (booléen, optionnel): pour vérifier si la matrice d'entrée est constituée uniquement de nombres finis

EXEMPLE:

import numpy as np depuis scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

PRODUCTION: -5,0

Valeurs propres clairsemées:

Les valeurs propres sont un ensemble spécifique de scalaires liés à des équations linéaires. L'ARPACK fournit qui vous permet de trouver des valeurs propres (vecteurs propres) assez rapidement. La fonctionnalité complète d'ARPACK est emballée dansdeux interfaces de haut niveau qui sont scipy.sparse.linalg.eigs et scipy.sparse.linalg.eigsh. eigs. L'interface eigs vous permet de trouver les valeurs propres de matrices carrées non symétriques réelles ou complexes, tandis que l'interface eigsh contient des interfaces pour des matrices symétriques réelles ou hermitiennes complexes.

La huit La fonction résout un problème de valeurs propres généralisé pour une matrice hermitienne complexe ou symétrique réelle.

EXEMPLE:

depuis scipy.linalg importez huit importez numpy comme np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = eigh (A) print ('Valeurs propres sélectionnées:', a) print ('Complex ndarray:', b)

PRODUCTION:

Valeurs propres sélectionnées: [-2,53382695 1,66735639 3,69488657 12,17158399]
Ndarray complexe: [[0,69205614 0,5829305 0,25682823 -0,33954321]
[-0,68277875 0,46838936 0,03700454 -0,5595134]
[0,23275694 -0,29164622 -0,72710245 -0,57627139]
[0,02637572 -0,59644441 0,63560361 -0,48945525]]

Structures et algorithmes de données spatiales:

Les données spatiales se composent essentiellement d'objets constitués de lignes, de points, de surfaces, etc. Le package scipy.spatial de SciPy peut calculerDiagrammes de Voronoi, triangulations, etc. en utilisant la bibliothèque Qhull. Il comprend également des implémentations de KDTree pour les requêtes de point du voisin le plus proche.

Triangulations de Delaunay:

Mathématiquement, les triangulations de Delaunay pour un ensemble de points discrets dans un plan est une triangulation telle qu'aucun point de l'ensemble de points donné n'està l'intérieur du cercle de n'importe quel triangle.

EXEMPLE:

import matplotlib.pyplot comme plt depuis scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (points) #Delaunay object print (a) print (a.simplices) plt.triplot (points [:, 0], points [:, 1], a.simplices) plt.plot (points [:, 1], points [:, 0], 'o') plt.show ()

PRODUCTION:

Fonctions de traitement d'images multidimensionnelles:

Le traitement d'image consiste essentiellement à effectuer des opérations sur une image pour récupérer des informations ou pour obtenir une image améliorée à partir de l'image d'origine. Le package scipy.ndimage se compose d'un certain nombre dedes fonctions de traitement et d'analyse d'images conçues pour fonctionner avec des tableaux de dimensionnalité arbitraire.

Convolution et corrélation:

SciPy fournit un certain nombre de fonctions qui permettent la corrélation et la convolution des images.

  • La fonction correlate1d peut être utilisé pour calculer une corrélation unidimensionnelle le long d'un axe donné
  • La fonction corrélatif permet la corrélation multidimensionnelle de tout tableau donné avec le noyau spécifié
  • La fonction convolve1d peut être utilisé pour calculer la convolution unidimensionnelle le long d'un axe donné
  • La fonction convoluer permet la convolution multidimensionnelle de tout tableau donné avec le noyau spécifié

EXEMPLE:

importer numpy en tant que np depuis scipy.ndimage importer correlate1d correlate1d ([3,5,1,7,2,6,9,4], weights = [1,2])

PRODUCTION: tableau ([9, 13, 7, 15, 11, 14, 24, 17])

Fichier IO:

Le package scipy.io fournit un certain nombre de fonctions qui vous aident à gérer des fichiers de différents formats tels que les fichiers MATLAB, les fichiers IDL, les fichiers Matrix Market, etc.

Pour utiliser ce package, vous devrez l'importer comme suit:

importer scipy.io en tant que sio

Pour des informations complètes sur le sous-paquet, vous pouvez vous référer au document officiel sur Fichier IO .

Cela nous amène à la fin de ce didacticiel SciPy. J'espère que vous avez tout compris clairement. Assurez-vous de pratiquer autant que possible .

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «Tutoriel SciPy» et nous vous répondrons dans les plus brefs délais.

Pour obtenir des connaissances approfondies sur Python ainsi que sur ses différentes applications, vous pouvez vous inscrire en direct avec une assistance 24/7 et un accès à vie.