Tutorial SciPy: O que é Python SciPy e como usá-lo?



SciPy é uma biblioteca Python usada para resolver problemas científicos e matemáticos. NumPy vs SciPy. Básico, Especial, Integração, Otimização, etc com exemplos.

A matemática lida com um grande número de conceitos que são muito importantes, mas, ao mesmo tempo, complexos e demorados. Contudo, fornece a biblioteca SciPy completa que resolve esse problema para nós. Neste tutorial do SciPy, você aprenderá como usar essa biblioteca junto com algumas funções e seus exemplos.

Antes de prosseguir, dê uma olhada em todos os tópicos discutidos neste artigo:





Então vamos começar. :)

O que é SciPy?

SciPy é uma biblioteca Python de código aberto usada para resolver problemas científicos e matemáticos. É construído no extensão e permite ao usuário manipular e visualizar dados com uma ampla gama de comandos de alto nível. Conforme mencionado anteriormente, o SciPy é baseado no NumPy e, portanto, se você importar o SciPy, não há necessidade de importar o NumPy.



NumPy vs SciPy

Ambos NumPy e SciPy são usado para análises matemáticas e numéricas usadas. NumPy contém dados de matriz e operações básicas, como classificação, indexação, etc., enquanto SciPy consiste em todo o código numérico. Embora NumPy forneça uma série de que pode ajudar a resolver álgebra linear, transformadas de Fourier, etc., SciPy é a biblioteca que realmente contém versões completas dessas funções junto com muitas outras. No entanto, se estiver fazendo análises científicas usando Python, você precisará instalar o NumPy e o SciPy, já que o SciPy é baseado no NumPy.

Subpacotes no SciPy:

SciPy tem vários subpacotes para vários cálculos científicos que são mostrados na tabela a seguir:

NomeDescrição
grupoAlgoritmos de clustering
constantesConstantes físicas e matemáticas
fftpackRotinas de transformação rápida de Fourier
integrarSolucionadores de integração e equações diferenciais ordinárias
interpolarSplines de interpolação e suavização
EuEntrada e saída
linalgÁlgebra Linear
eu vooProcessamento de imagem N-dimensional
odrRegressão de distância ortogonal
otimizarRotinas de otimização e localização de raízes
sinalProcessamento de sinal
escassoMatrizes esparsas e rotinas associadas
espacialEstruturas e algoritmos de dados espaciais
especialFunções especiais
EstatísticasDistribuições e funções estatísticas

No entanto, para uma descrição detalhada, você pode seguir o documentação oficial .



Esses pacotes precisam ser importados exclusivamente antes de serem usados. Por exemplo:

do cluster de importação scipy

Antes de examinar cada uma dessas funções em detalhes, vamos primeiro dar uma olhada nas funções que são comuns no NumPy e no SciPy.

Funções básicas:

Interação com NumPy:

O SciPy é baseado no NumPy e, portanto, você pode usar as próprias funções do NumPy para lidar com matrizes. Para saber mais sobre essas funções, você pode simplesmente usar as funções help (), info () ou source ().

Socorro():

Para obter informações sobre qualquer função, você pode usar o Socorro() função. Existem duas maneiras de usar essa função:

  • sem quaisquer parâmetros
  • usando parâmetros

Aqui está um exemplo que mostra os dois métodos acima:

from scipy import cluster help (cluster) #with parâmetro help () #without parameter

Quando você executa o código acima, o primeiro help () retorna as informações sobre o grupo submódulo. O segundo help () pede ao usuário para inserir o nome de qualquer módulo, palavra-chave, etc, para o qual o usuário deseja buscar informações. Para interromper a execução desta função, simplesmente digite ‘sair’ e pressione Enter.

info ():

Esta função retorna informações sobre o desejado , módulos, etc.

scipy.info (cluster)

fonte():

O código-fonte é retornado apenas para objetos escritos em . Esta função não retorna informações úteis caso os métodos ou objetos sejam escritos em qualquer outra linguagem como C. No entanto, caso você queira fazer uso desta função, pode fazê-lo da seguinte maneira:

scipy.source (cluster)

Funções especiais:

SciPy fornece uma série de funções especiais que são usadas em física matemática, como elíptica, funções de conveniência, gama, beta, etc.Para procurar todas as funções, você pode usar a função help () conforme descrito anteriormente.

Funções exponenciais e trigonométricas:

O pacote de funções especiais do SciPy fornece uma série de funções através das quais você pode encontrar expoentes e resolver problemas trigonométricos.

Considere o seguinte exemplo:

EXEMPLO:

from 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 ( d)

RESULTADO:

1000,0
8,0
1.0
0,7071067811865475

Existem muitas outras funções presentes no pacote de funções especiais do SciPy que você pode experimentar.

Funções de integração:

SciPy fornece várias funções para resolver integrais. Variando do integrador diferencial comum ao uso de regras trapezoidais para calcular integrais, SciPy é um depósito de funções para resolver todos os tipos de problemas de integrais.

Integração Geral:

SiPy fornece uma função chamada quad para calcular a integral de uma função que possui uma variável. Os limites podem ser ± & infin(± inf) para indicar limites infinitos. A sintaxe da função quad () é a seguinte:

SINTAXE:

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)

Aqui, a função será integrada entre os limites aeb (também pode ser infinito).

EXEMPLO:

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

No exemplo acima, a função 'a' é avaliada entre os limites 0, 1. Quando este código for executado, você verá a seguinte saída.

RESULTADO:

(3.9086503371292665, 4.3394735994897923e-14)

Função dupla integral:

SciPy fornece dblquad que pode ser usado para calcular integrais duplos. Uma integral dupla, como muitos de nós sabemos, consiste em duas variáveis ​​reais. A função dblquad () tomará a função a ser integrada como seu parâmetro junto com 4 outras variáveis ​​que definem os limites e as funções tingir e dx.

EXEMPLO:

de importação scipy integrar a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integrate.dblquad (a, 0, 2, b, c)

RESULTADO:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy fornece várias outras funções para avaliar integrais triplos, integrais n, integrais de Romberg, etc. que você pode explorar mais detalhadamente. Para encontrar todos os detalhes sobre as funções necessárias, use a função de ajuda.

Funções de otimização:

O scipy.optimize fornece vários algoritmos de otimização comumente usados ​​que podem ser vistos usando a função de ajuda.

Consiste basicamente no seguinte:

  • Minimização irrestrita e restrita de funções escalares multivariadas, ou seja minimizar (por exemplo, BFGS, Newton Conjugate Gradient, Nelder_mead simplex, etc)
  • Rotinas de otimização global (por exemplo, evolução_diferencial, recozimento duplo, etc)
  • Minimização de mínimos quadrados e ajuste de curva (por exemplo, mínimos_squares, curve_fit, etc)
  • Minimizadores de funções escalares univariadas e localizadores de raiz (por exemplo, minimize_scalar e root_scalar)
  • Solucionadores de sistemas de equações multivariados usando algoritmos como o híbrido Powell, Levenberg-Marquardt.

Função Rosenbrook:

Função Rosenbrook ( Rosen ) é um problema de teste usado para algoritmos de otimização baseados em gradiente. É definido da seguinte forma no SciPy:

rosen-Scipy tutorial-edurekaEXEMPLO:

import numpy como np de scipy.optimize import rosen a = 1,2 * np.arange (5) rosen (a)

RESULTADO: 7371.0399999999945

Nelder-Mead:

oNelder–Mead method é um método numérico freqüentemente usado para encontrar o min / max de uma função em um espaço multidimensional. No exemplo a seguir, o método de minimização é usado junto com o algoritmo de Nelder-Mead.

EXEMPLO:

de importação scipy otimizar a = [2,4, 1,7, 3,1, 2,9, 0,2] b = otimizar.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

RESULTADO: matriz ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Funções de interpolação:

No campo da análise numérica, interpolação se refere à construção de novos pontos de dados dentro de um conjunto de pontos de dados conhecidos. A biblioteca SciPy consiste em um subpacote denominado scipy.interpolate que consiste emfunções e classes de spline, classes de interpolação unidimensionais e multidimensionais (univariada e multivariada), etc.

Interpolação univariada:

A interpolação univariada é basicamente uma área de ajuste de curva queencontra a curva que fornece um ajuste exato a uma série de pontos de dados bidimensionais. SciPy fornece interp1d função que pode ser utilizada para produzir interpolação univariada.

EXEMPLO:

import matplotlib.pyplot como plt de scipy import interpolar x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # use a função de interpolação retornada por `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

RESULTADO:

Interpolação multivariada:

Interpolação multivariada(espacialinterpolação) é um tipointerpolaçãoem funções que consistem em mais de uma variável. O exemplo a seguir demonstra um exemplo do interp2d função.
Interpolando sobre uma grade 2-D usando a função interp2d (x, y, z) basicamente usará matrizes x, y, z para aproximar alguma função f: “z = f (x, y)“ e retorna uma função cujo método de chamada usa interpolação spline para encontrar o valor de novos pontos.
EXEMPLO:

from scipy import interpolar 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 = interpolar.interp2d (x, y, z, tipo = 'cúbico') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnovo, ynovo) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

RESULTADO:

Funções de transformação de Fourier:

A análise de Fourier é um método que trata de expressar uma função como uma soma de componentes periódicos e recuperar o sinal desses componentes. o fft funções podem ser usadas para retornar otransformada discreta de Fourier de uma sequência real ou complexa.

EXEMPLO:

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

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

Da mesma forma, você pode encontrar o inverso disso usando o ifft funcionar da seguinte forma:

EXEMPLO:

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

RESULTADO: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

Funções de processamento de sinal:

Processamento de sinais trata comanalisar, modificar e sintetizar sinais como som, imagens, etc. SciPy fornece algumas funções usando as quais você pode projetar, filtrar e interpolar dados unidimensionais e bidimensionais.

Filtrando:

Ao filtrar um sinal, você basicamente remove componentes indesejados dele. Para realizar a filtragem ordenada, você pode usar o order_filter função. Essa função basicamente executa a filtragem ordenada em uma matriz. A sintaxe desta função é a seguinte:

SINTAXE:
order_filter (a, domínio, classificação)

a = matriz de entrada N-dimensional

domain = mask array tendo o mesmo número de dimensões que `a`

classificação = número não negativo que seleciona elementos da lista depois de ter sido classificado (0 é o menor seguido por 1 ...)

EXEMPLO:

from scipy importar sinal x = np.arange (35) .reshape (7, 5) domínio = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domínio, 1))

RESULTADO:

[[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]]

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

Formas de onda:

O subpacote scipy.signal também consiste em várias funções que podem ser usadas para gerar formas de onda. Uma dessas funções é chilro . Esta função é um fgerador de cosseno com varredura de frequência e a sintaxe é a seguinte:

SINTAXE:
chirp (t, f0, t1, f1, método = ’linear’, phi = 0, vertex_zero = True)

Onde,

EXEMPLO:

de scipy.signal import chirp, espectrograma 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 ('Chirp Linear') plt.xlabel ('tempo em segundos)') plt.show ()

RESULTADO:

Álgebra Linear:

Álgebra linear trata de equações lineares e suas representações usando espaços vetoriais e matrizes. SciPy é construído emBibliotecas ATLAS LAPACK e BLAS e éextremamente rápido na resolução de problemas relacionados à álgebra linear. Além de todas as funções de numpy.linalg, scipy.linalg também oferece várias outras funções avançadas. Além disso, se numpy.linalg não for usado junto comSuporte para ATLAS LAPACK e BLAS, scipy.linalg é mais rápido que numpy.linalg.

Encontrando o Inverso de uma Matriz:

Matematicamente, o inverso de uma matriz Aé a matrizBde tal modo queAB = IOndeEué a matriz de identidade que consiste em uns abaixo da diagonal principal denotada comoB = A-1. No SciPy, esse inverso pode ser obtido usando o linalg.inv método.

EXEMPLO:

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

RESULTADO:

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

Encontrando os Determinantes:

O valor derivado aritmeticamente dos coeficientes da matriz é conhecido como o determinante de uma matriz quadrada. No SciPy, isso pode ser feito usando uma função a que tem a seguinte sintaxe:

SINTAXE:
det (a, overwrite_a = False, check_finite = True)
Onde,

a: (M, M) é uma matriz quadrada

overwrite_a (bool, opcional): Permite a substituição de dados em um

check_finite (bool, opcional): Para verificar se a matriz de entrada consiste apenas em números finitos

EXEMPLO:

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

RESULTADO: -5,0

Valores próprios esparsos:

Os valores próprios são um conjunto específico de escalares vinculados a equações lineares. O ARPACK fornece que permitem que você encontre autovalores (autovetores) bastante rápido. A funcionalidade completa do ARPACK está incluída emduas interfaces de alto nível que são scipy.sparse.linalg.eigs e scipy.sparse.linalg.eigsh. eigs. A interface eigs permite que você encontre os autovalores de matrizes quadradas não simétricas reais ou complexas, enquanto a interface eigsh contém interfaces para matrizes simétricas reais ou hermitianas complexas.

o oito função resolve um problema de autovalor generalizado para uma matriz hermitiana complexa ou simétrica real.

EXEMPLO:

de scipy.linalg import eigh import numpy as 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 ('Autovalores selecionados:', a) print ('Complex ndarray:', b)

RESULTADO:

Valores próprios selecionados: [-2,53382695 1,66735639 3,69488657 12,17158399]
Ndarray complexo: [[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]]

Estruturas e algoritmos de dados espaciais:

Os dados espaciais consistem basicamente em objetos que são feitos de linhas, pontos, superfícies, etc. O pacote scipy.spatial do SciPy pode computarDiagramas de Voronoi, triangulações, etc. usando a biblioteca Qhull. Ele também consiste em implementações KDTree para consultas de ponto de vizinho mais próximo.

Triangulações de Delaunay:

Matematicamente, as triangulações de Delaunay para um conjunto de pontos discretos em um plano é uma triangulação tal que nenhum ponto no conjunto de pontos dado édentro da circunferência de qualquer triângulo.

EXEMPLO:

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

RESULTADO:

Funções de processamento de imagem multidimensional:

O processamento de imagem basicamente lida com a execução de operações em uma imagem para recuperar informações ou obter uma imagem aprimorada da original. O pacote scipy.ndimage consiste em uma série defunções de processamento e análise de imagens projetadas para trabalhar com matrizes de dimensionalidade arbitrária.

Convolução e correlação:

O SciPy oferece várias funções que permitem a correlação e a convolução de imagens.

  • A função correlate1d pode ser usado para calcular a correlação unidimensional ao longo de um determinado eixo
  • A função correlacionar permite a correlação multidimensional de qualquer array com o kernel especificado
  • A função convolve1d pode ser usado para calcular a convolução unidimensional ao longo de um determinado eixo
  • A função convolver permite a convolução multidimensional de qualquer array com o kernel especificado

EXEMPLO:

import numpy como np de scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], pesos = [1,2])

RESULTADO: matriz ([9, 13, 7, 15, 11, 14, 24, 17])

Arquivo IO:

O pacote scipy.io oferece várias funções que ajudam a gerenciar arquivos de diferentes formatos, como arquivos MATLAB, arquivos IDL, arquivos Matrix Market, etc.

Para fazer uso deste pacote, você precisará importá-lo da seguinte maneira:

importar scipy.io como sio

Para obter informações completas sobre o subpacote, você pode consultar o documento oficial em Arquivo IO .

Isso nos leva ao final deste tutorial do SciPy. Espero que você tenha entendido tudo claramente. Certifique-se de praticar o máximo possível .

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog “SciPy Tutorial” e entraremos em contato com você o mais breve possível.

Para obter conhecimento aprofundado sobre Python, juntamente com seus vários aplicativos, você pode se inscrever para com suporte 24/7 e acesso vitalício.

qual é a tag span em html