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:
- Interpoláció
- Integráció
- Optimalizálás
- Képfeldolgozás
- Statisztika
- Speciális funkciószámítások stb.
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 scipyA második út az Anacondához kapcsolódik, a csomagot a következőképpen telepíthetjük:
conda install -c anaconda scipyA könyvtár telepítése után importálhatjuk a következőképpen:
import scipyVé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ámotLehetsé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 matplotlibAz 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őlfirst_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 = 63x + 7y = 9
Oldjuk meg a fenti egyenleteket:
scipy import linalgbólegyenlet = 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.