Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

SciPy em Python Tutorial:O que é | Exemplos de biblioteca e funções

SciPy em Python


SciPy em Python é uma biblioteca de código aberto usada para resolver problemas matemáticos, científicos, de engenharia e técnicos. Ele permite que os usuários manipulem os dados e visualizem os dados usando uma ampla variedade de comandos Python de alto nível. SciPy é construído na extensão Python NumPy. SciPy também é pronunciado como “Sigh Pi”.

Subpacotes do SciPy:

Neste tutorial do Python SciPy, você aprenderá:

Por que usar o SciPy

Numpy VS SciPy

Numpy:

SciPy:

SciPy – Instalação e configuração do ambiente


Você também pode instalar o SciPy no Windows via pip
Python3 -m pip install --user numpy scipy 

Instale o Scipy no Linux
sudo apt-get install  python-scipy python-numpy

Instale o SciPy no Mac
sudo port install py35-scipy py35-numpy

Antes de começarmos a aprender o SciPy Python, você precisa conhecer a funcionalidade básica, bem como os diferentes tipos de um array do NumPy

A maneira padrão de importar módulos SciPy e Numpy:
from scipy import special   #same for other modules
import numpy as np

Pacote de entrada/saída de arquivo:


Scipy, pacote de E/S, possui uma ampla gama de funções para trabalhar com diferentes formatos de arquivos que são Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV e formato binário.

Vamos pegar um exemplo de formato de arquivo Python SciPy, que é usado regularmente no 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']

Saída:
array([[ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.]])

Explicação do código

Pacote de funções especiais

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.

Função de raiz cúbica:


A função de raiz cúbica encontra a raiz cúbica dos valores.

Sintaxe:
scipy.special.cbrt(x)

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

Saída: array([3., 4.])

Função Exponencial:


A função exponencial calcula o elemento 10**x.

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

Saída:[1.e+01 1.e+10]

Permutações e combinações:


O SciPy também oferece funcionalidade para calcular Permutações e Combinações.

Combinações – scipy.special.comb(N,k)

Exemplo:
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)

Saída:15,0

Permutações –
scipy.special.perm(N,k)

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

Saída:20

Função exponencial de soma de log


Log Sum Exponential calcula o log do elemento de entrada exponencial de soma.

Sintaxe:
scipy.special.logsumexp(x) 

Função Bessel


Enésima função de cálculo de ordem inteira

Sintaxe:
scipy.special.jn()

Álgebra Linear com SciPy


Agora vamos fazer alguns testes com scipy.linalg,

Calculando o determinante de uma matriz bidimensional,
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 )

Saída: -7,0

Matriz Inversa –
scipy.linalg.inv()

Inverse Matrix of Scipy calcula o inverso de qualquer matriz quadrada.

Vamos ver,
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 )

Saída:
array( [[-0.28571429,  0.71428571],
       [ 0.42857143, -0.57142857]] )

Valores próprios e vetor próprio


scipy.linalg.eig()

Exemplo
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)

Saída:
[ 9.+0.j -1.+0.j] #eigenvalues
 [ [ 0.70710678 -0.5547002 ] #eigenvectors
   [ 0.70710678  0.83205029] ]

Transformada de Fourier Discreta – scipy.fftpack


Exemplo: Pegue uma onda e mostre usando a biblioteca Matplotlib. tomamos um exemplo simples de função periódica 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()

Saída:



Você pode ver isso. A frequência é de 5 Hz e seu sinal se repete em 1/5 de segundo – é chamado como um determinado período de tempo.

Agora vamos usar esta onda senoidal com a ajuda do aplicativo 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()

Saída:


Otimização e ajuste no 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) 

Saída:



A otimização foi encerrada com sucesso.

Valor da função atual:-23,241676

Iterações:4

Avaliações de funções:18

Avaliações de gradiente:6

array([-1.67096375])


otimizar.basinhopping(função, 0)

Resultado:
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])

Algoritmo 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")

Saída:
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])

Processamento de imagem com SciPy – scipy.ndimage


Exemplo: Vamos dar um exemplo de transformação geométrica de imagens
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()

Saída:



Agora nós Flip-down imagem atual:

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

Saída:



Exemplo: Rotação de imagem usando 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()

Saída:


Integração com Scipy – Integração Numérica


Exemplo: Agora veja um exemplo de Integração única



Aqui um é o limite superior e b é o limite inferior

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)

Saída:

(0,33333333333333337, 3,700743415417189e-15)

Aqui a função retorna dois valores, em que o primeiro valor é a integração e o segundo valor é o erro estimado na integral.

Exemplo:Agora veja um exemplo SciPy de integração dupla. Encontramos a dupla integração da seguinte equação,


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)

Saída:

(3.0, 9.657432734515774e-14)

Você viu essa saída acima como a mesma anterior.

Resumo

Nome do pacote Descrição
scipy.io
  • Entrada/saída de arquivo
scipy.special
  • Função especial
scipy.linalg
  • Operação de álgebra linear
scipy.interpolate
  • Interpolação
scipy.otimizar
  • Otimização e ajuste
scipy.stats
  • Estatísticas e números aleatórios
scipy.integrate
  • Integração numérica
scipy.fftpack
  • Transformadas rápidas de Fourier
scipy.signal
  • Processamento de sinal
scipy.ndimage
  • Manipulação de imagem –

python

  1. Instrução Python Print():Como imprimir com exemplos
  2. Python String count() com EXEMPLOS
  3. Python String format() Explique com EXEMPLOS
  4. Funções do Python Lambda com EXEMPLOS
  5. Função Python abs():exemplos de valor absoluto
  6. Função Python round() com EXEMPLOS
  7. Função Python map() com EXEMPLOS
  8. Python Timeit() com exemplos
  9. Yield in Python Tutorial:Generator &Yield vs Return Example
  10. type() e isinstance() em Python com exemplos