Adattudomány

Python SciPy bemutató

Python SciPy bemutató
Ebben a leckében meglátjuk, mi a SciPy könyvtár használata a Pythonban, és hogyan segít a matematikai egyenletek és algoritmusok interaktív kezelésében. A SciPy Python csomagban az a jó, hogy ha osztályokat akarunk vagy weboldalakat készítünk, akkor a SciPy teljes mértékben kompatibilis a rendszer egészével, és zökkenőmentesen integrálható.

Mint A SciPy nyílt forráskódú, nagyon aktív és élénk fejlesztői közösséggel rendelkezik, amelynek köszönhetően a SciPy-vel rengeteg tudományos alkalmazáshoz és számításhoz rengeteg modul van jelen. A SciPy-vel végrehajtható összetett matematikai műveletek közül néhány:

A SciPy összehasonlítható a legtöbb parancs- és szabványkönyvtárral, például a C ++ és a Matlab GSL könyvtárával. Mivel a SciPy a NumPy csomag tetejére épül, ez a két csomag teljesen integrálható. Ha eszébe jut egy matematikai művelet, amelyet el kell végeznie, mindenképpen ellenőrizze a SciPy könyvtárat, mielőtt önállóan implementálná a modult, mert a legtöbb esetben a SciPy az összes műveletet az Ön számára teljes mértékben végrehajtotta.

Telepítse a SciPy könyvtárat

Telepítsük a SciPy könyvtárat, mielőtt áttérnénk a tényleges példákra és koncepciókra. A csomag telepítésének két módja van. Az első a Python csomagkezelő, pip használatát tartalmazza:

pip install scipy

A második út az Anacondához kapcsolódik, a csomagot a következőképpen telepíthetjük:

conda install -c anaconda scipy

A könyvtár telepítése után importálhatjuk a következőképpen:

import scipy

Végül, mivel a NumPy-t is használni fogjuk (az összes NumPy-művelethez ajánlott közvetlenül a NumPy-t használni, ahelyett, hogy végigvennénk a SciPy-csomagot):

import számot

Lehetséges, hogy egyes esetekben mi is szívesen ábrázoljuk az eredményeket, amelyekhez a Matplotlib könyvtárat fogjuk használni. Végezze el a következő importálást az adott könyvtárhoz:

import matplotlib

Az Anaconda menedzsert fogom használni a lecke összes példájához. Elindítok egy Jupyter Notebookot ugyanerre:

Most, hogy készen állunk az összes importálási utasítással egy kód beírására, kezdjünk el merülni a SciPy csomagban néhány gyakorlati példával.

Polinomiális egyenletek használata

Kezdjük azzal, hogy megnézzük az egyszerű polinomi egyenleteket. Kétféle módon integrálhatjuk a polinom függvényeket programunkba. Használhatjuk poly1d osztály, amely együtthatókat vagy egy polinom gyökereit használja fel a polinom inicializálásához. Nézzünk meg egy példát:

a numpy import poly1d-ből
first_polynomial = poly1d ([3, 4, 7])
nyomtatás (első_polinom)

Amikor futtatjuk ezt a példát, a következő kimenetet látjuk:

Nyilvánvaló, hogy az egyenlet polinomiális ábrázolása kimenetként van nyomtatva, így az eredmény elég könnyen érthető. Különféle műveleteket hajthatunk végre ezen a polinomon is, akár négyszögölhetjük meg, megtalálhatjuk deriváltját, vagy akár megoldhatjuk x értékre. Próbáljuk meg ezeket elvégezni a következő példában:

nyomtatás ("Polinom négyzet: \ n")
nyomtatás (első_polinom * első_polinom)
print ("Polinom származéka: \ n")
print (first_polynomial.származék ()
print ("A polinom megoldása: \ n")
nyomtatás (első_polinom (3))

Amikor futtatjuk ezt a példát, a következő kimenetet látjuk:

Amikor arra gondoltam, hogy csak ezt tehetjük a SciPy-vel, eszembe jutott, hogy integrálhatunk egy polinomot is. Futtassunk egy utolsó példát a Polinomokkal:

print ("A polinom integrálása: \ n")
print (first_polynomial.egész (1))

Az általunk átadott egész szám megmondja a csomagnak, hogy hányszor integrálja a polinomot:

Egyszerűen átadhatunk egy másik egész számot, amely megmondja a csomagnak, hogy hányszor integrálja ezt a polinomot.

Lineáris egyenletek megoldása

Sőt, lineáris egyenleteket is megoldhatunk a SciPy-vel, és megtalálhatjuk a gyökereiket, ha vannak ilyenek. A lineáris egyenletek megoldásához az egyenletkészletet NumPy tömbként, megoldásukat pedig külön NumPy tömbként ábrázoljuk. Vizualizáljuk egy példával, ahol ugyanezt tesszük és felhasználjuk linalg csomagot az egyenletek gyökereinek megtalálásához, íme az egyenletek, amelyeket megoldani fogunk:

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

Oldjuk meg a fenti egyenleteket:

scipy import linalgból
egyenlet = np.tömb ([[1, 5], [3, 7]])
megoldás = np.tömb ([[6], [9]])
gyökerek = linalg.megoldani (egyenlet, megoldás)
nyomtatás ("Megtalálta a gyökereket:")
nyomtatás (gyökerek)
print ("\ n A pontterméknek nullának kell lennie, ha a megoldások helyesek:")
nyomtatás (egyenlet.pont (gyökér) - megoldás)

A fenti program futtatásakor látni fogjuk, hogy a dot szorzategyenlet nulla eredményt ad, ami azt jelenti, hogy a program által megtalált gyökerek helyesek voltak:

Fourier transzformációk a SciPy-vel

A Fourier-transzformációk segítenek abban, hogy egy funkciót külön komponensként fejezhessünk ki, amely ezt a függvényt alkotja, és végigvezeti Önt abban, hogy miként kombinálhatjuk ezeket a komponenseket az eredeti függvény visszaszerzéséhez.

Nézzünk meg egy egyszerű példát a Fourier-transzformációkra, ahol két koszinusz összegét ábrázoljuk a Matplotlib könyvtár segítségével:

scipy-től.fftpack import fft
# Mintapontok száma
N = 500
# minta távolság
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 ábrázolás céljából
import matplotlib.pyplot mint plt
plt.plot (xf, 2.0 / N * np.abs (yf [0: N // 2])
plt.cím ('Info')
plt.ylabel ('Y tengely')
plt.xlabel ('X tengely')
plt.rács()
plt.előadás()

Itt egy minta tér és koszinusz egyenlet felépítésével kezdtük, amelyet aztán átalakítottunk és ábrázoltunk. Itt van a fenti program kimenete:

Ez az egyik jó példa, amikor azt látjuk, hogy a SciPy-t egy komplex matematikai egyenletben használják a dolgok egyszerű megjelenítésére.

Vektorok és mátrix a SciPy-vel

Most, hogy sok mindent tudunk, amire a SciPy képes, biztosak lehetünk abban, hogy a SciPy képes együttműködni a Vektorokkal és a Matrixszal is. A mátrixok a lineáris algebra fontos részét képezik, mivel a mátrixokat a vektor leképezések ábrázolására is használjuk.

Ahogy a lineáris egyenletek megoldását vizsgáltuk a SciPy-vel, a vektorokat is képviselhetjük np.sor() funkciókat. Kezdjük egy mátrix elkészítésével:

my_matrix = np.mátrix (np.véletlen.véletlenszerű ((3, 3)))
nyomtatás (my_matrix)

Itt van a fenti kódrészlet kimenete:

Valahányszor mátrixokról beszélünk, mindig sajátértékekről és sajátvektorokról beszélünk. Egyszerű szavakkal: a sajátvektorok azok a vektorok, amelyek mátrixszal szorozva nem változtatják meg az irányukat, szemben a legtöbb vektorral. Ez azt jelenti, hogy még akkor is, ha sajátvektorokat mátrixszal szoroz, létezik olyan érték (vagy sajátérték), amely a szorzás egyik tényezője. Ez azt jelenti, hogy:

Ax = λx.

A fenti egyenletben A a mátrix, λ a sajátérték és x a vektor. Írjunk egy egyszerű kódrészletet, hogy megtaláljuk az adott vektor sajátértékeit:

la, vektor = linalg.eig (saját_mátrix)
nyomtatás (vektor [:, 0])
nyomtatás (vektor [:, 1])
nyomtatás (linalg.eigvals (my_matrix))

Amikor futtatjuk ezt a példát, a következő kimenetet látjuk:

A mátrixdetermináns kiszámítása

A következő művelet, amelyet a SciPy-vel fogunk végrehajtani, egy 2-dimenziós mátrix determinánsának kiszámítása. Az utolsó kódrészletben használt mátrixot itt újra felhasználjuk:

linalg.det (my_matrix)

Amikor futtatjuk ezt a példát, a következő kimenetet látjuk:

Következtetés

Ebben a leckében sok jó példát néztünk meg, ahol a SciPy segíthet nekünk azáltal, hogy komplex matematikai számításokat hajt végre számunkra egy könnyen használható API-val és csomagokkal.

A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...
5 legjobb arcade játék Linuxhoz
Manapság a számítógépek komoly gépek, amelyeket játékra használnak. Ha nem sikerül megszerezni az új magas pontszámot, akkor tudni fogja, mire gondolo...
Csata a Wesnothért 1.13.6 Megjelent a fejlesztés
Csata a Wesnothért 1.13.A múlt hónapban megjelent 6 a hatodik fejlesztési kiadás az 1-ben.13.x sorozat, és számos fejlesztést hajt végre, nevezetesen ...