Podatkovna znanost

Vadnica za Python SciPy

Vadnica za Python SciPy
V tej lekciji bomo videli, kakšna je uporaba knjižnice SciPy v Pythonu in kako nam pomaga pri interaktivnem delu z matematičnimi enačbami in algoritmi. Dobra stvar paketa SciPy Python je, da je SciPy, če želimo predavanja ali izdelati spletne strani, popolnoma združljiv s sistemom kot celoto in lahko zagotavlja nemoteno integracijo.

Kot SciPy je odprtokodna, ima zelo aktivno in živahno skupnost razvijalcev, zaradi česar je s SciPyjem na voljo ogromno modulov za ogromno znanstvenih aplikacij in izračunov. Nekatere zapletene matematične operacije, ki jih je mogoče izvesti s programom SciPy, so:

SciPy lahko primerjamo z večino ukaznih in standardnih knjižnic, kot sta knjižnica GSL za C ++ in Matlab. Ker je SciPy zgrajen na vrhu paketa NumPy, je mogoče ta dva paketa tudi popolnoma integrirati. Če si lahko omislite matematično operacijo, ki jo je treba izvesti, preverite knjižnico SciPy, preden sami implementirate ta modul, saj ima SciPy v večini primerov že vse operacije za vas.

Namestite SciPy knjižnico

Namestite knjižnico SciPy, preden preidemo na dejanske primere in koncepte. Ta paket lahko namestite na dva načina. Prva vključuje uporabo upravitelja paketov Python, pip:

pip namestite

Drugi način se nanaša na Anacondo, paket lahko namestimo kot:

conda install -c anaconda scipy

Ko je knjižnica nameščena, jo lahko uvozimo kot:

uvozi scipy

Nazadnje, saj bomo uporabili tudi NumPy (priporočljivo je, da za vse operacije NumPy uporabljamo NumPy neposredno, namesto da bi šli skozi paket SciPy):

uvozi numpy

Možno je, da bomo v nekaterih primerih radi tudi izrisali svoje rezultate, za katere bomo uporabili knjižnico Matplotlib. Za to knjižnico izvedite naslednji uvoz:

uvozi matplotlib

Za vse primere v tej lekciji bom uporabil upravitelja Anaconde. Za isto bom izdal Jupyter Notebook:

Zdaj, ko smo pripravljeni z vsemi izjavami o uvozu napisati nekaj kode, se začnimo potapljati v paket SciPy z nekaj praktičnimi primeri.

Delo s polinomskimi enačbami

Začeli bomo s pregledom enostavnih polinomskih enačb. Polinomske funkcije lahko v naš program vključimo na dva načina. Lahko izkoristimo poly1d razred, ki uporablja koeficiente ali korenine polinoma za inicializiranje polinoma. Oglejmo si primer:

iz numpy uvoza poly1d
first_polynomial = poly1d ([3, 4, 7])
tisk (prvi_polinom)

Ko zaženemo ta primer, bomo videli naslednji izhod:

Jasno je, da je polinomska predstavitev enačbe natisnjena kot rezultat, tako da je rezultat dokaj enostaven za razumevanje. Tudi na tem polinumu lahko izvajamo različne operacije, ga kvadratimo, najdemo njegov odvod ali ga celo rešimo za vrednost x. Poskusimo narediti vse to v naslednjem primeru:

print ("Polinomski kvadrat: \ n")
tisk (prvi_polinom * prvi_polinom)
print ("Izpeljanka iz polinoma: \ n")
print (prvi_polinom.deriv ())
print ("Reševanje polinoma: \ n")
tisk (first_polynomial (3))

Ko zaženemo ta primer, bomo videli naslednji izhod:

Ko sem razmišljal, da je to vse, kar lahko naredimo s SciPyjem, sem se spomnil, da lahko integriramo tudi polinom. Zaženimo še zadnji primer s polinomi:

print ("Integriranje polinoma: \ n")
print (prvi_polinom.integ (1))

Celo število, ki ga prenesemo, pove paketu, kolikokrat naj integrira polinom:

Lahko preprosto prenesemo drugo celo število, ki pove paketu, kolikokrat naj integrira ta polinom.

Reševanje linearnih enačb

Z SciPy je mogoče celo rešiti linearne enačbe in poiskati njihove korenine, če obstajajo. Za reševanje linearnih enačb predstavljamo niz enačb kot matrike NumPy in njihovo rešitev kot ločena polja NumPy. Predstavljajmo si ga na primeru, ko delamo enako in izkoristimo linalg paket za iskanje korenin enačb, tukaj so enačbe, ki jih bomo rešili:

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

Rešimo zgornje enačbe:

iz scipy uvoza linalg
enačba = np.matrika ([[1, 5], [3, 7]])
rešitev = np.matrika ([[6], [9]])
korenine = linalg.rešiti (enačba, rešitev)
print ("Najdemo korenine:")
tisk (korenine)
print ("\ n Dot izdelek mora biti nič, če so rešitve pravilne:")
natis (enačba.pika (korenine) - raztopina)

Ko zaženemo zgornji program, bomo videli, da enačba pikčastega produkta daje nič rezultat, kar pomeni, da so bile korenine, za katere je program ugotovil, pravilne:

Fourierjeve transformacije z SciPy

Fourierjeve transformacije nam pomagajo, da funkcijo izrazimo kot ločene komponente, ki sestavljajo to funkcijo, in nas vodi do tega, kako lahko te komponente rekombiniramo, da dobimo nazaj prvotno funkcijo.

Oglejmo si preprost primer Fourierjevih transformacij, kjer z uporabo knjižnice Matplotlib narišemo vsoto dveh kosinusov:

od scipy.fftpack uvoz
# Število vzorčnih točk
N = 500
# razmik med vzorci
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 za risanje
uvozi matplotlib.pyplot kot plt
plt.ploskev (xf, 2.0 / N * np.abs (yf [0: N // 2]))
plt.naslov ('Info')
plt.ylabel ('os Y')
plt.xlabel ('os X')
plt.mreža()
plt.pokaži ()

Tu smo začeli z gradnjo vzorčnega prostora in enačbe kosinusa, ki smo jo nato transformirali in narisali. Tu je rezultat zgornjega programa:

To je eden dobrih primerov, ko vidimo, da se SciPy uporablja v zapleteni matematični enačbi za enostavno vizualizacijo stvari.

Vektorji in matrica z SciPy

Zdaj, ko vemo veliko stvari, za katere je sposoben SciPy, smo lahko prepričani, da lahko SciPy deluje tudi z Vectors in Matrix. Matrice so pomemben del linearne algebre, saj matrice uporabljamo tudi za predstavitev vektorskih preslikav.

Tako kot smo gledali na reševanje linearnih enačb s SciPy, lahko tudi vektorje predstavljamo z np.matrika () funkcije. Začnimo z gradnjo matrike:

my_matrix = np.matrika (np.naključen.naključno ((3, 3)))
tiskanje (my_matrix)

Tu je rezultat zgornjega delčka:

Kadar koli govorimo o matricah, vedno govorimo o lastnih vrednostih in lastnih vektorjih. Preprosto povedano, lastni vektorji so vektorji, ki pomnoženi z matrico ne spremenijo svoje smeri, v nasprotju z večino vektorjev. To pomeni, da tudi če pomnožite lastne vektorje z matrico, obstaja vrednost (ali lastna vrednost), ki je eden od dejavnikov množenja. To pomeni:

Ax = λx.

V zgornji enačbi je A matrika, λ lastna vrednost in x vektor. Zapišemo preprost delček kode, da poiščemo lastne vrednosti za dani vektor:

la, vektor = linalg.eig (my_matrix)
tisk (vektor [:, 0])
tisk (vektor [:, 1])
tisk (linalg.eigvals (my_matrix))

Ko zaženemo ta primer, bomo videli naslednji izhod:

Determinant za izračun matrike

Naslednja operacija, ki jo bomo izvedli s SciPy, je izračun determinant dvodimenzionalne matrike. Ponovno bomo uporabili matrico, ki smo jo uporabili v zadnjem delčku kode tukaj:

linalg.det (my_matrix)

Ko zaženemo ta primer, bomo videli naslednji izhod:

Zaključek

V tej lekciji smo si ogledali veliko dobrih primerov, ko nam lahko SciPy pomaga z izvedbo zapletenih matematičnih izračunov za nas z enostavnim API-jem in paketi.

Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...
S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...
Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...