Ciência de Dados

Tutorial Python SciPy

Tutorial Python SciPy
Nesta lição, veremos qual é o uso da biblioteca SciPy em Python e como ela nos ajuda a trabalhar com equações matemáticas e algoritmos de maneira interativa. A coisa boa sobre o pacote SciPy Python é que se quisermos classes ou construir páginas da web, SciPy é totalmente compatível com o sistema como um todo e pode fornecer integração perfeita.

Como SciPy é um código aberto, tem uma comunidade de desenvolvedores muito ativa e vibrante devido à qual há um enorme número de módulos presentes para uma vasta quantidade de aplicações científicas e cálculos disponíveis com SciPy. Algumas das operações matemáticas complexas que podem ser realizadas com SciPy são:

O SciPy pode ser comparado à maioria das bibliotecas de comando e padrão, como a biblioteca GSL para C ++ e Matlab. Como o SciPy é construído sobre o pacote NumPy, esses dois pacotes também podem ser integrados completamente. Se você conseguir pensar em uma operação matemática que precisa ser feita, certifique-se de verificar a biblioteca SciPy antes de implementar esse módulo por conta própria, porque na maioria dos casos, SciPy já tem todas as operações totalmente implementadas para você.

Instale a biblioteca SciPy

Vamos instalar a biblioteca SciPy antes de passar para os exemplos e conceitos reais. Existem duas maneiras de instalar este pacote. O primeiro inclui o uso do gerenciador de pacotes Python, pip:

pip install scipy

A segunda forma está relacionada ao Anaconda, podemos instalar o pacote como:

conda install -c anaconda scipy

Assim que a biblioteca estiver instalada, podemos importá-la como:

importar scipy

Finalmente, como também usaremos o NumPy (é recomendado que, para todas as operações do NumPy, usemos o NumPy diretamente em vez de passar pelo pacote SciPy):

importar numpy

É possível que, em alguns casos, também queiramos traçar nossos resultados para os quais usaremos a biblioteca Matplotlib. Execute a seguinte importação para essa biblioteca:

importar matplotlib

Usarei o gerenciador Anaconda para todos os exemplos nesta lição. Vou lançar um Notebook Jupyter para o mesmo:

Agora que estamos prontos com todas as instruções de importação para escrever algum código, vamos começar a mergulhar no pacote SciPy com alguns exemplos práticos.

Trabalho com equações polinomiais

Começaremos examinando equações polinomiais simples. Existem duas maneiras pelas quais podemos integrar funções polinomiais em nosso programa. Podemos fazer uso de poly1d classe que faz uso de coeficientes ou as raízes de um polinômio para inicializar um polinômio. Vejamos um exemplo:

from numpy import poly1d
primeiro_polinômio = poly1d ([3, 4, 7])
imprimir (primeiro_polinômio)

Quando executarmos este exemplo, veremos a seguinte saída:

Claramente, a representação polinomial da equação é impressa como a saída para que o resultado seja muito fácil de entender. Podemos realizar várias operações neste polinômio também, como elevá-lo ao quadrado, encontrar sua derivada ou até mesmo resolvê-lo para um valor de x. Vamos tentar fazer tudo isso no próximo exemplo:

imprimir ("Quadrado polinomial: \ n")
imprimir (primeiro_polinômio * primeiro_polinômio)
print ("Derivada de Polinômio: \ n")
imprimir (primeiro_polinômio.deriv ())
print ("Resolvendo o polinômio: \ n")
imprimir (primeiro_polinômio (3))

Quando executarmos este exemplo, veremos a seguinte saída:

Bem quando eu estava pensando que isso é tudo que poderíamos fazer com SciPy, lembrei que podemos integrar um polinômio também. Vamos executar um exemplo final com polinômios:

print ("Integrando o Polinômio: \ n")
imprimir (primeiro_polinômio.inteiro (1))

O número inteiro que passamos diz ao pacote quantas vezes integrar o polinômio:

Podemos simplesmente passar outro inteiro que diz ao pacote quantas vezes integrar este polinômio.

Resolvendo Equações Lineares

É ainda possível resolver equações lineares com SciPy e encontrar suas raízes, se existirem. Para resolver equações lineares, representamos o conjunto de equações como matrizes NumPy e sua solução como matrizes NumPy separadas. Vamos visualizá-lo com um exemplo em que fazemos o mesmo e usamos linalg pacote para encontrar as raízes das equações, aqui estão as equações que iremos resolver:

1x + 5y = 6
3x + 7y = 9

Vamos resolver as equações acima:

de importação scipy linalg
equação = np.matriz ([[1, 5], [3, 7]])
solução = np.matriz ([[6], [9]])
raízes = linalg.resolver (equação, solução)
print ("Encontrou as raízes:")
imprimir (raízes)
imprimir ("\ n Produto escalar deve ser zero se as soluções estiverem corretas:")
imprimir (equação.ponto (raízes) - solução)

Quando executamos o programa acima, veremos que a equação de produto escalar dá resultado zero, o que significa que as raízes que o programa encontrou estavam corretas:

Transformações de Fourier com SciPy

As transformações de Fourier nos ajudam a expressar uma função como componentes separados que a constituem e nos orienta sobre a maneira pela qual podemos recombinar esses componentes para obter a função original de volta.

Vejamos um exemplo simples de Transformações de Fourier, onde plotamos a soma de dois cossenos usando a biblioteca Matplotlib:

de scipy.fftpack import fft
# Número de pontos de amostra
N = 500
# espaçamento de amostra
T = 1.0/800.0
x = np.linspace (0.0, N * T, N)
y = np.cos (50.0 * 2.0 * np.pi * x) + 0.5 * np.cos (80.0 * 2.0 * np.pi * x)
yf = fft (y)
xf = np.linspace (0.0, 1.0 / (2.0 * T), N // 2)
# matplotlib para fins de plotagem
importar matplotlib.pyplot como plt
plt.plot (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.título ('Informações')
plt.ylabel ('eixo Y')
plt.xlabel ('eixo X')
plt.rede()
plt.mostrar()

Aqui, começamos construindo um espaço de amostra e uma equação de cosseno, que então transformamos e plotamos. Aqui está o resultado do programa acima:

Este é um dos bons exemplos em que vemos o SciPy sendo usado em uma equação matemática complexa para visualizar as coisas facilmente.

Vetores e Matriz com SciPy

Agora que sabemos muitas coisas das quais o SciPy é capaz, podemos ter certeza de que o SciPy também pode trabalhar com vetores e matrizes. As matrizes são uma parte importante da álgebra linear, pois as matrizes também são usadas para representar os mapeamentos de vetores.

Assim como olhamos para resolver equações lineares com SciPy, podemos representar vetores com np.variedade() funções. Vamos começar construindo uma matriz:

minha_matriz = np.matriz (np.aleatória.aleatório ((3, 3)))
imprimir (minha_matriz)

Aqui está a saída do snippet acima:

Sempre que falamos sobre matrizes, sempre falamos sobre valores próprios e vetores próprios. Para simplificar, os vetores próprios são os vetores que, quando multiplicados por uma matriz, não mudam de direção, ao contrário da maioria dos vetores. Isso significa que mesmo quando você multiplica um autovetores por uma matriz, existe um valor (ou autovalor) que é um dos fatores da multiplicação. Isso significa:

Ax = λx.

Na equação acima, A é a matriz, λ é o autovalor e x é o vetor. Vamos escrever um snippet de código simples para encontrar os autovalores de um determinado vetor:

la, vetor = linalg.eig (minha_matriz)
imprimir (vetor [:, 0])
imprimir (vetor [:, 1])
imprimir (linalg.eigvals (my_matrix))

Quando executarmos este exemplo, veremos a seguinte saída:

Calculando o Determinante da Matriz

A próxima operação que realizaremos com SciPy é calcular o determinante de uma matriz bidimensional. Vamos reutilizar a matriz que usamos no último trecho de código aqui:

linalg.det (minha_matriz)

Quando executarmos este exemplo, veremos a seguinte saída:

Conclusão

Nesta lição, vimos muitos bons exemplos em que o SciPy pode nos ajudar realizando cálculos matemáticos complexos para nós com uma API e pacotes fáceis de usar.

Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...
Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...