Datu zinātne

Python SciPy apmācība

Python SciPy apmācība
Šajā nodarbībā mēs redzēsim, kāda ir SciPy bibliotēkas izmantošana Python un kā tā mums palīdz sadarboties ar matemātiskiem vienādojumiem un algoritmiem. Laba lieta SciPy Python paketē ir tā, ka, ja mēs vēlamies klases vai izveidojam tīmekļa lapas, SciPy ir pilnībā saderīgs ar sistēmu kopumā un var nodrošināt nevainojamu integrāciju.

SciPy ir atvērtā koda, tai ir ļoti aktīva un dinamiska izstrādātāju kopiena, kuras dēļ ir pieejams milzīgs moduļu skaits, lai SciPy būtu pieejams ļoti daudziem zinātniskiem lietojumiem un aprēķiniem. Dažas no sarežģītajām matemātiskajām operācijām, kuras var veikt ar SciPy, ir:

SciPy var salīdzināt ar lielāko daļu komandu un standarta bibliotēku, piemēram, GSL bibliotēku C ++ un Matlab. Tā kā SciPy ir veidots virs NumPy pakotnes, šīs divas paketes var arī pilnībā integrēt. Ja jūs varat iedomāties kādu matemātisku darbību, kas jāveic, pārliecinieties, vai esat pārbaudījis SciPy bibliotēku, pirms jūs pats ieviešat šo moduli, jo vairumā gadījumu SciPy jau ir pilnībā izpildītas visas jūsu darbības.

Instalējiet SciPy bibliotēku

Instalēsim SciPy bibliotēku, pirms pārejam pie faktiskajiem piemēriem un koncepcijām. Ir divi veidi, kā instalēt šo pakotni. Pirmais ietver Python pakotņu pārvaldnieka, pip izmantošanu:

instalējiet scipy

Otrais veids attiecas uz Anaconda, mēs varam instalēt pakotni kā:

conda install -c anakonda scipy

Kad bibliotēka ir instalēta, mēs varam to importēt kā:

importa scipy

Visbeidzot, tā kā mēs izmantosim arī NumPy (visām NumPy darbībām ieteicams izmantot NumPy tieši, nevis iet caur SciPy pakotni):

importa numurs

Iespējams, ka dažos gadījumos mums patiks arī uzzīmēt savus rezultātus, kuriem izmantosim Matplotlib bibliotēku. Veiciet šo bibliotēkas importēšanu šādi:

importa matplotlib

Es izmantošu Anaconda vadītāju visiem šīs nodarbības piemēriem. Es palaidīšu Jupyter piezīmju grāmatiņu tam pašam:

Tagad, kad mēs esam gatavi ar visiem importēšanas paziņojumiem uzrakstīt kodu, sāksim ienirt SciPy paketē ar dažiem praktiskiem piemēriem.

Darbs ar polinomu vienādojumiem

Mēs sāksim aplūkot vienkāršus polinomu vienādojumus. Ir divi veidi, kā mēs varam integrēt polinoma funkcijas savā programmā. Mēs varam izmantot poly1d klase, kas polinoma inicializēšanai izmanto koeficientus vai polinoma saknes. Apskatīsim piemēru:

no numpy importa poly1d
first_polynomial = poly1d ([3, 4, 7])
drukāt (pirmais_polinoms)

Izpildot šo piemēru, mēs redzēsim šādu izvadi:

Skaidrs, ka vienādojuma polinoma attēlojums tiek izdrukāts kā produkcija, lai rezultāts būtu diezgan viegli saprotams. Arī šajā polinomā mēs varam veikt dažādas darbības, piemēram, kvadrātveida, atrast tā atvasinājumu vai pat atrisināt par vērtību x. Mēģināsim visu izdarīt nākamajā piemērā:

drukāt ("Polinoma laukums: \ n")
drukāt (pirmais_polinoms * pirmais_polinoms)
drukāt ("Polinoma atvasinājums: \ n")
drukāt (pirmais_polinoms.atvasināt ()
print ("Polinoma atrisināšana: \ n")
drukāt (pirmais_polinoms (3))

Izpildot šo piemēru, mēs redzēsim šādu izvadi:

Tieši tad, kad es domāju, ka tas ir viss, ko mēs varam darīt ar SciPy, es atcerējos, ka mēs varam integrēt arī polinomu. Izpildīsim pēdējo piemēru ar polinomiem:

print ("Polinoma integrēšana: \ n")
drukāt (pirmais_polinoms.vesels (1))

Vesels skaitlis, kuru mēs nododam, norāda paketei, cik reizes jāintegrē polinoms:

Mēs varam vienkārši nodot citu veselu skaitli, kas paketei norāda, cik reizes integrēt šo polinomu.

Lineāro vienādojumu risināšana

Ir pat iespējams atrisināt lineārus vienādojumus ar SciPy un atrast to saknes, ja tādas pastāv. Lai atrisinātu lineāros vienādojumus, vienādojumu kopu mēs attēlojam kā NumPy masīvus un to risinājumu kā atsevišķus NumPy masīvus. Vizualizēsim to ar piemēru, kur mēs darām to pašu un izmantojam linalg pakete, lai atrastu vienādojumu saknes, šeit ir vienādojumi, kurus mēs atrisināsim:

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

Atrisināsim iepriekš minētos vienādojumus:

no scipy importa linalg
vienādojums = np.masīvs ([[1, 5], [3, 7]])
risinājums = np.masīvs ([[6], [9]])
saknes = linalg.atrisināt (vienādojums, risinājums)
drukāt ("Atradušas saknes:")
druka (saknes)
print ("\ n Punkta precei jābūt nullei, ja pareizie risinājumi:")
drukāt (vienādojums.punkts (saknes) - šķīdums)

Palaidot iepriekš minēto programmu, mēs redzēsim, ka punktveida produkta vienādojums dod nulles rezultātu, kas nozīmē, ka saknes, kuras atrada programma, bija pareizas:

Furjē transformācijas ar SciPy

Furjē transformācijas palīdz mums izteikt funkciju kā atsevišķus komponentus, kas veido šo funkciju, un mūs iepazīstina ar veidu, kā mēs varam rekombinēt šos komponentus, lai atgūtu sākotnējo funkciju.

Apskatīsim vienkāršu Furjē pārveidojumu piemēru, kur mēs uzzīmējam divu kosinusu summu, izmantojot Matplotlib bibliotēku:

no scipy.fftpack importēt fft
# Paraugu punktu skaits
N = 500
# paraugu atstarpes
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 zīmēšanas vajadzībām
importa matplotlib.pyplot kā plt
plt.sižets (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.nosaukums (“Informācija”)
plt.ylabel ('Y ass')
plt.xlabel ('X ass')
plt.režģis ()
plt.rādīt ()

Šeit mēs sākām, izveidojot telpas un kosinusa vienādojuma paraugu, kuru pēc tam pārveidojām un uzzīmējām. Šeit ir iepriekš minētās programmas rezultāts:

Šis ir viens no labajiem piemēriem, kad mēs redzam, ka SciPy tiek izmantots sarežģītā matemātiskā vienādojumā, lai viegli vizualizētu lietas.

Vektori un matrica ar SciPy

Tagad, kad mēs zinām daudzas lietas, uz kurām SciPy spēj, mēs varam būt pārliecināti, ka SciPy var strādāt arī ar vektoriem un matricām. Matricas ir svarīga lineārās algebras sastāvdaļa, jo matricas mēs arī izmantojam, lai attēlotu vektoru kartējumus.

Tāpat kā mēs skatījāmies uz lineāro vienādojumu risināšanu ar SciPy, mēs varam attēlot vektorus ar np.masīvs () funkcijas. Sāksim ar matricas izveidošanu:

my_matrix = np.matrica (np.nejaušs.nejaušs ((3, 3)))
drukāt (my_matrix)

Šeit ir iepriekš minētā fragmenta izvade:

Ikreiz, kad mēs runājam par matricām, mēs vienmēr runājam par īpašvērtībām un īpašvektoriem. Īsāk sakot, īpašvektori ir vektori, kas, reizinot ar matricu, nemaina to virzienu, pretstatā lielākajai daļai vektoru. Tas nozīmē, ka pat reizinot Eigenvektorus ar matricu, pastāv vērtība (vai īpašvērtība), kas ir viens no reizināšanas faktoriem. Tas nozīmē:

Cirvis = λx.

Iepriekšējā vienādojumā A ir matrica, λ ir īpašvērtība un x ir vektors. Uzrakstīsim vienkāršu koda fragmentu, lai atrastu konkrētā vektora īpašvērtības:

la, vektors = linalg.eig (mana_matrica)
drukāt (vektors [:, 0])
drukāt (vektors [:, 1])
druka (linalg.eigvals (my_matrix))

Izpildot šo piemēru, mēs redzēsim šādu izvadi:

Aprēķina matricas noteicošais faktors

Nākamā darbība, kuru veiksim ar SciPy, ir divdimensiju matricas determinanta aprēķināšana. Šeit atkārtoti izmantosim matricu, kuru izmantojām pēdējā koda fragmentā:

linalg.det (mana_matrica)

Izpildot šo piemēru, mēs redzēsim šādu izvadi:

Secinājums

Šajā nodarbībā mēs apskatījām daudz labu piemēru, kur SciPy var mums palīdzēt, veicot mums sarežģītus matemātiskus aprēķinus ar viegli lietojamu API un pakotnēm.

SuperTuxKart operētājsistēmai Linux
SuperTuxKart ir lielisks nosaukums, kas paredzēts, lai sniegtu jums Mario Kart pieredzi bez maksas jūsu Linux sistēmā. Tas ir diezgan izaicinoši un ja...
Cīņa par Vesnota apmācību
Cīņa par Vesnotu ir viena no populārākajām atvērtā koda stratēģijas spēlēm, kuru jūs varat spēlēt šajā laikā. Šī spēle ir izstrādāta ne tikai ļoti ilg...
0 A.D. Apmācība
No daudzajām stratēģijas spēlēm 0 A.D. izdodas izcelties kā visaptverošs nosaukums un ļoti dziļa, taktiska spēle, neskatoties uz to, ka tā ir atvērtā ...