Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Tutoriel SciPy en Python :qu'est-ce que c'est | Exemples de bibliothèque et de fonctions

SciPy en Python

SciPy en Python est une bibliothèque open source utilisée pour résoudre des problèmes mathématiques, scientifiques, d'ingénierie et techniques. Il permet aux utilisateurs de manipuler les données et de les visualiser à l'aide d'un large éventail de commandes Python de haut niveau. SciPy est construit sur l'extension Python NumPy. SciPy se prononce également comme "Sigh Pi".

Sous-packages de SciPy :

Dans ce tutoriel Python SciPy, vous apprendrez :

Pourquoi utiliser SciPy

Numpy contre SciPy

Numpy :

SciPy :

SciPy – Installation et configuration de l'environnement

Vous pouvez également installer SciPy sous Windows via pip

Python3 -m pip install --user numpy scipy 

Installer Scipy sur Linux

sudo apt-get install  python-scipy python-numpy

Installer SciPy sur Mac

sudo port install py35-scipy py35-numpy

Avant de commencer à apprendre SciPy Python, vous devez connaître les fonctionnalités de base ainsi que les différents types d'un tableau de NumPy

La manière standard d'importer des modules SciPy et Numpy :

from scipy import special   #same for other modules
import numpy as np

Package d'entrée/sortie de fichier :

Scipy, package I/O, dispose d'un large éventail de fonctions pour travailler avec différents formats de fichiers qui sont Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV et format binaire.

Prenons un exemple de format de fichier Python SciPy tel qu'il est régulièrement utilisé dans MatLab :

 import numpy as np
 from scipy import io as sio
 array = np.ones((4, 4))
 sio.savemat('example.mat', {'ar': array}) 
 data = sio.loadmat(‘example.mat', struct_as_record=True)
 data['ar']

Sortie :

array([[ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.]])

Explication du code

Pack de fonctions spéciales

help(scipy.special)	
Output : 
NAME
    scipy.special

DESCRIPTION
    ========================================
    Special functions (:mod:`scipy.special`)
    ========================================
     
    .. module:: scipy.special
     
    Nearly all of the functions below are universal functions and follow
    broadcasting and automatic array-looping rules. Exceptions are noted.

Fonction racine cubique :

La fonction Racine cubique trouve la racine cubique des valeurs.

Syntaxe :

scipy.special.cbrt(x)

Exemple :

from scipy.special import cbrt
#Find cubic root of 27 & 64 using cbrt() function
cb = cbrt([27, 64])
#print value of cb
print(cb)

Sortie : tableau([3., 4.])

Fonction exponentielle :

La fonction exponentielle calcule les 10**x élément par élément.

Exemple :

from scipy.special import exp10
#define exp10 function and pass value in its
exp = exp10([1,10])
print(exp)

Sortie :[1.e+01 1.e+10]

Permutations et combinaisons :

SciPy offre également des fonctionnalités pour calculer les permutations et les combinaisons.

Combinaisons – scipy.special.comb(N,k)

Exemple :

from scipy.special import comb
#find combinations of 5, 2 values using comb(N, k)
com = comb(5, 2, exact = False, repetition=True)
print(com)

Sortie :15.0

Permutations –

scipy.special.perm(N,k)

Exemple :

from scipy.special import perm
#find permutation of 5, 2 using perm (N, k) function
per = perm(5, 2, exact = True)
print(per)

Sortie :20

Fonction exponentielle de somme logarithmique

Log Sum Exponential calcule le log de l'élément d'entrée somme exponentielle.

Syntaxe :

scipy.special.logsumexp(x) 

Fonction Bessel

Fonction de calcul d'ordre nième entier

Syntaxe :

scipy.special.jn()

Algèbre linéaire avec SciPy

Faisons maintenant un test avec scipy.linalg,

Calcul du déterminant d'une matrice à deux dimensions,

from scipy import linalg
import numpy as np
#define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass values to det() function
linalg.det( two_d_array )

Sortie : -7.0

Matrice inverse –

scipy.linalg.inv()

Inverse Matrix of Scipy calcule l'inverse de n'importe quelle matrice carrée.

Voyons,

from scipy import linalg
import numpy as np
# define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass value to function inv()
linalg.inv( two_d_array )

Sortie :

array( [[-0.28571429,  0.71428571],
       [ 0.42857143, -0.57142857]] )

Valeurs propres et vecteur propre

scipy.linalg.eig()

Exemple

from scipy import linalg
import numpy as np
#define two dimensional array
arr = np.array([[5,4],[6,3]])
#pass value into function
eg_val, eg_vect = linalg.eig(arr)
#get eigenvalues
print(eg_val)
#get eigenvectors
print(eg_vect)

Sortie :

[ 9.+0.j -1.+0.j] #eigenvalues
 [ [ 0.70710678 -0.5547002 ] #eigenvectors
   [ 0.70710678  0.83205029] ]

Transformée de Fourier discrète – scipy.fftpack

Exemple : Prenez une vague et montrez en utilisant la bibliothèque Matplotlib. nous prenons un exemple de fonction périodique simple de sin(20 × 2πt)

%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np 

#Frequency in terms of Hertz
fre  = 5 
#Sample rate
fre_samp = 50
t = np.linspace(0, 2, 2 * fre_samp, endpoint = False )
a = np.sin(fre  * 2 * np.pi * t)
figure, axis = plt.subplots()
axis.plot(t, a)
axis.set_xlabel ('Time (s)')
axis.set_ylabel ('Signal amplitude')
plt.show()

Sortie :

Vous pouvez le voir. La fréquence est de 5 Hz et son signal se répète en 1/5 seconde - c'est un appel pendant une période de temps particulière.

Utilisons maintenant cette onde sinusoïdale à l'aide de l'application DFT.

from scipy import fftpack

A = fftpack.fft(a)
frequency = fftpack.fftfreq(len(a)) * fre_samp
figure, axis = plt.subplots()

axis.stem(frequency, np.abs(A))
axis.set_xlabel('Frequency in Hz')
axis.set_ylabel('Frequency Spectrum Magnitude')
axis.set_xlim(-fre_samp / 2, fre_samp/ 2)
axis.set_ylim(-5, 110)
plt.show()

Sortie :

Optimisation et ajustement dans SciPy - scipy.optimize

%matplotlib inline
import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np

def function(a):
       return   a*2 + 20 * np.sin(a)
plt.plot(a, function(a))
plt.show()
#use BFGS algorithm for optimization
optimize.fmin_bfgs(function, 0) 

Sortie :

L'optimisation s'est terminée avec succès.

Valeur actuelle de la fonction :-23,241676

Itérations :4

Évaluations de fonction :18

Évaluations de dégradé :6

tableau([-1.67096375])

optimiser.basinhopping(fonction, 0)

Sortie :

fun: -23.241676238045315
 lowest_optimization_result:
      fun: -23.241676238045315
 hess_inv: array([[0.05023331]])
      jac: array([4.76837158e-07])
  message: 'Optimization terminated successfully.'
     nfev: 15
      nit: 3
     njev: 5
   status: 0
  success: True
        x: array([-1.67096375])
                    message: ['requested number of basinhopping iterations completed successfully']
      minimization_failures: 0
                       nfev: 1530
                        nit: 100
                       njev: 510
               x: array([-1.67096375])

Algorithme Nelder-Mead :

import numpy as np
from scipy.optimize import minimize
#define function f(x)
def f(x):   
    return .4*(1 - x[0])**2
  
optimize.minimize(f, [2, -1], method="Nelder-Mead")

Sortie :

final_simplex: (array([[ 1.        , -1.27109375],
       [ 1.        , -1.27118835],
       [ 1.        , -1.27113762]]), array([0., 0., 0.]))
           fun: 0.0
       message: 'Optimization terminated successfully.'
          nfev: 147
           nit: 69
        status: 0
       success: True
             x: array([ 1.        , -1.27109375])

Traitement d'images avec SciPy - scipy.ndimage

Exemple : Prenons un exemple de transformation géométrique d'images

from scipy import misc
from matplotlib import pyplot as plt
import numpy as np
#get face image of panda from misc package
panda = misc.face()
#plot or show image of face
plt.imshow( panda )
plt.show()

Sortie :

Maintenant, nous Replions image actuelle :

#Flip Down using scipy misc.face image  
flip_down = np.flipud(misc.face())
plt.imshow(flip_down)
plt.show()

Sortie :

Exemple : Rotation de l'image à l'aide de Scipy,

from scipy import ndimage, misc
from matplotlib import pyplot as plt
panda = misc.face()
#rotatation function of scipy for image – image rotated 135 degree
panda_rotate = ndimage.rotate(panda, 135)
plt.imshow(panda_rotate)
plt.show()

Sortie :

Intégration avec Scipy - Intégration numérique

Exemple : Prenons maintenant un exemple d'intégration unique

Ici un est la limite supérieure et b est la limite inférieure

from scipy import integrate
# take f(x) function as f
f = lambda x : x**2
#single integration with a = 0 & b = 1  
integration = integrate.quad(f, 0 , 1)
print(integration)

Sortie :

(0.3333333333333337, 3.700743415417189e-15)

Ici, la fonction renvoie deux valeurs, dans lesquelles la première valeur est l'intégration et la seconde valeur est l'erreur estimée dans l'intégrale.

Exemple :Prenons maintenant un exemple SciPy de double intégration. On trouve la double intégration de l'équation suivante,

from scipy import integrate
import numpy as np
#import square root function from math lib
from math import sqrt
# set  fuction f(x)
f = lambda x, y : 64 *x*y
# lower limit of second integral
p = lambda x : 0
# upper limit of first integral
q = lambda y : sqrt(1 - 2*y**2)
# perform double integration
integration = integrate.dblquad(f , 0 , 2/4,  p, q)
print(integration)

Sortie :

(3.0, 9.657432734515774e-14)

Vous avez vu cette sortie ci-dessus comme la même précédente.

Résumé

Nom du package Description
scipy.io
  • Fichier d'entrée/sortie
scipy.special
  • Fonction spéciale
scipy.linalg
  • Opération d'algèbre linéaire
scipy.interpoler
  • Interpolation
scipy.optimize
  • Optimisation et ajustement
scipy.stats
  • Statistiques et nombres aléatoires
scipy.integrate
  • Intégration numérique
scipy.fftpack
  • Transformées de Fourier rapides
scipy.signal
  • Traitement du signal
scipy.ndimage
  • Manipulation d'images –

Python

  1. Instruction Python Print() :comment imprimer avec des exemples
  2. Python String count() avec des EXEMPLES
  3. Fonctions Python Lambda avec EXEMPLES
  4. Fonction Python abs() :Exemples de valeurs absolues
  5. Fonction Python round() avec EXEMPLES
  6. Fonction Python map() avec EXEMPLES
  7. Python Timeit() avec des exemples
  8. Rendement en Python Tutoriel :Exemple de générateur et rendement vs retour
  9. type() et isinstance() en Python avec des exemples