Andmeteadus

Pythoni SciPy õpetus

Pythoni SciPy õpetus
Selles õppetükis näeme, mis on SciPy teegi kasutamine Pythonis ja kuidas see aitab meil matemaatiliste võrrandite ja algoritmidega interaktiivselt töötada. SciPy Pythoni paketi hea külg on see, et kui soovime klasse või koostame veebilehti, on SciPy täielikult ühilduv kogu süsteemiga ja suudab pakkuda sujuvat integreerimist.

As SciPy on avatud lähtekoodiga, sellel on väga aktiivne ja elujõuline arendajate kogukond, tänu millele on tohutult palju mooduleid, mis on saadaval SciPyga saadaval oleva hulga teaduslike rakenduste ja arvutuste jaoks. Mõned keerukad matemaatilised toimingud, mida saab SciPy abil teha, on:

SciPyt saab võrrelda enamiku käsu- ja standardsete teekidega, nagu GSL-i teek C ++ ja Matlab jaoks. Kuna SciPy on ehitatud NumPy paketi peale, saab ka need kaks paketti täielikult integreerida. Kui suudate mõelda tehtavale matemaatilisele toimingule, kontrollige enne mooduli iseseisvat rakendamist kindlasti SciPy teeki, sest enamasti on SciPy kõik teie jaoks tehtavad toimingud juba täielikult rakendatud.

Installige SciPy teek

Installime SciPy teegi, enne kui läheme tegelike näidete ja mõistete juurde. Selle paketi installimiseks on kaks võimalust. Esimene hõlmab Pythoni paketihalduri pip kasutamist:

pip install scipy

Teine viis on seotud Anacondaga, saame paketi installida järgmiselt:

conda install -c anaconda scipy

Kui teek on installitud, võime selle importida järgmiselt:

import scipy

Lõpuks, kuna kasutame ka NumPy-d (kõigi NumPy-toimingute jaoks on soovitatav kasutada NumPyt otse SciPy-paketi läbimise asemel):

impordi number

Võimalik, et mõnel juhul meeldib meile ka oma tulemusi kavandada, mille jaoks kasutame Matplotlibi teeki. Tehke selle kogu jaoks järgmine import:

import matplotlib

Selle õppetunni kõigi näidete jaoks kasutan Anaconda haldurit. Käivitan sama jaoks Jupyteri märkmiku:

Nüüd, kui kõik impordilaused on valmis koodi kirjutama, alustame SciPy paketiga sukeldumist mõne praktilise näite abil.

Töö polünoomvõrranditega

Alustuseks vaatame lihtsaid polünoomvõrrandeid. Polünoomifunktsioonid saab oma programmi integreerida kahel viisil. Me saame seda kasutada polü1d klass, mis kasutab polünoomi initsialiseerimiseks koefitsiente või polünoomi juuri. Vaatame näidet:

numbrist impordi poly1d
first_polynomial = poly1d ([3, 4, 7])
print (esimene_polünoom)

Selle näite käivitamisel näeme järgmist väljundit:

On selge, et võrrandi polünoomide esitus trükitakse väljundina, nii et tulemust on üsna lihtne mõista. Sellel polünoomil on võimalik teha ka erinevaid toiminguid, nagu ruudutada, leida selle tuletis või isegi lahendada x väärtuse korral. Proovime kõik need teha järgmises näites:

print ("Polünoomi ruut: \ n")
print (first_polynomial * first_polynomial)
print ("Polünoomi tuletis: \ n")
print (esimene_polünoom.tuletada ()
print ("Polünoomi lahendamine: \ n")
print (esimene_polünoom (3))

Selle näite käivitamisel näeme järgmist väljundit:

Just siis, kui mõtlesin, et see on kõik, mida SciPyga teha saame, meenus mulle, et saame integreerida ka polünoomi. Käivitame viimase näite polünoomidega:

print ("Polünoomi integreerimine: \ n")
print (esimene_polünoom.täisarv (1))

Möödunud täisarv ütleb paketile, mitu korda polünoom integreeritakse:

Me võime lihtsalt edastada teise täisarvu, mis ütleb paketile, mitu korda see polünoom integreerida.

Lineaarvõrrandite lahendamine

SciPy abil on võimalik isegi lineaarvõrrandeid lahendada ja leida nende juured, kui need on olemas. Lineaarvõrrandite lahendamiseks esitame võrrandite hulga NumPy massiividena ja nende lahenduse eraldi NumPy massiividena. Kujutleme seda näite abil, kus me teeme sama ja kasutame seda linalg paketi võrrandite juurte leidmiseks on siin lahendused, mille lahendame:

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

Lahendame ülaltoodud võrrandid:

alates scipy import linalg
võrrand = np.massiiv ([[1, 5], [3, 7]])
lahus = np.massiiv ([[6], [9]])
juured = linalg.lahendama (võrrand, lahendus)
print ("Leitud juured:")
trükk (juured)
print ("\ n Dot-toode peaks olema null, kui lahendused on õiged:")
print (võrrand.punkt (juured) - lahendus)

Ülaltoodud programmi käivitamisel näeme, et punkttoote võrrand annab tulemuse nulli, mis tähendab, et programmi leitud juured olid õiged:

Fourieri teisendused SciPy abil

Fourieri teisendused aitavad meil funktsiooni väljendada eraldi komponentidena, mis moodustavad selle funktsiooni, ja juhendab meid selle kaudu, kuidas saame need komponendid uuesti kombineerida, et saada algne funktsioon tagasi.

Vaatame lihtsamat Fourieri teisenduste näidet, kus me joonistame kahe koosinuse summa Matplotlibi teeki kasutades:

scipy'st.fftpack import fft
# Proovipunktide arv
N = 500
# proovivahe
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 joonestamise eesmärgil
import matplotlib.püplot nagu plt
plt.joonistus (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.pealkiri ('Info')
plt.ylabel ('Y-telg')
plt.xlabel ('X-telg')
plt.ruudustik ()
plt.näita ()

Siin alustasime prooviruumi ja koosinusvõrrandi konstrueerimisega, mille seejärel teisendasime ja joonistasime. Siin on ülaltoodud programmi väljund:

See on üks hea näide, kus näeme, et SciPyt kasutatakse keerulises matemaatilises võrrandis asjade hõlpsaks visualiseerimiseks.

Vektorid ja maatriks koos SciPy-ga

Nüüd, kui teame paljusid asju, milleks SciPy on võimeline, võime olla kindlad, et SciPy suudab töötada ka vektorite ja maatriksiga. Maatriksid on lineaarse algebra oluline osa, kuna maatriksid on sellised, mida kasutame ka vektorite vastenduste esitamiseks.

Nii nagu me vaatasime SciPy abil lineaarvõrrandite lahendamist, saame ka vektorid esitada np.massiiv () funktsioone. Alustame maatriksi koostamisest:

minu_maatriks = np.maatriks (np.juhuslik.juhuslik ((3, 3)))
print (minu_maatriks)

Siin on ülaltoodud jupi väljund:

Alati kui räägime maatriksitest, räägime alati omaväärtustest ja omavektoritest. Lihtsamalt öeldes on omavektorid vektorid, mis maatriksiga korrutatuna ei muuda oma suunda, erinevalt enamikust vektoritest. See tähendab, et isegi kui korrutate omavektorid maatriksiga, eksisteerib väärtus (või omaväärtus), mis on üks korrutamise teguritest. See tähendab:

Kirv = λx.

Ülaltoodud võrrandis on A maatriks, λ on omaväärtus ja x on vektor. Kirjutame antud vektorile omaväärtuste leidmiseks lihtsa koodijupi:

la, vektor = linalg.eig (minu_maatriks)
print (vektor [:, 0])
print (vektor [:, 1])
trükk (linalg.eigvalid (minu_maatriks))

Selle näite käivitamisel näeme järgmist väljundit:

Maatriksiteguri arvutamine

Järgmine operatsioon, mille SciPy abil teeme, on kahemõõtmelise maatriksi determinandi arvutamine. Taaskasutame siin viimases koodijupis kasutatud maatriksit:

linalg.det (minu_maatriks)

Selle näite käivitamisel näeme järgmist väljundit:

Järeldus

Selles tunnis vaatasime palju häid näiteid, kus SciPy aitab meid, viies meie jaoks läbi keerukad matemaatilised arvutused koos hõlpsasti kasutatava API ja pakettidega.

HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...
Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...
Kuidas näidata FPS-loendurit Linuxi mängudes
Linuxi mängimine sai suure tõuke, kui Valve teatas Steam-kliendi ja nende mängude Linuxi toest 2012. aastal. Sellest ajast peale on paljud AAA- ja ind...