NumPy je moćna i široko korištena biblioteka u svijetu Python programiranja. Pruža višedimenzionalni objekt niza visokih performansi i alate za rad sa ovim nizovima. Jedna takva karakteristika je sposobnost izvođenja kalkulacije rolo prozora koristeći biblioteku numpy. U ovom članku ćemo se pozabaviti izračunima rolling window koristeći numpy biblioteku i predstaviti rješenje problema koji se može riješiti pomoću ove tehnike. Također ćemo dati objašnjenje koda korak po korak i razgovarati o srodnim bibliotekama i funkcijama uključenim u ovaj proces.
Razumijevanje izračunavanja rolling Window
Proračuni sa pokretnim prozorom uobičajena su metoda za analizu podataka u poljima kao što su finansije, obradu signala i meteorologiju. Glavna ideja ove tehnike je da se podaci podijele u prozore fiksne veličine koji se preklapaju, koji se zatim analiziraju uzastopno. Ovo omogućava otkrivanje obrazaca, trendova i anomalija koje možda neće biti vidljive kada se uzme u obzir cijeli skup podataka.
Osnovni koncept u proračunima rolo prozora je veličina prozora. Veličina prozora određuje koliko će se podataka uzeti u obzir u jednom proračunu. Manja veličina prozora rezultirat će osjetljivijom analizom, brzo otkrivajući lokalne promjene u podacima. S druge strane, veća veličina prozora će izgladiti varijacije, pružajući generaliziraniji pogled na podatke.
Rješenje: Kalkulacija rolling Window koristeći numpy
Razmotrimo problem u kojem imamo jednodimenzionalni niz podataka i želimo da izračunamo srednju vrijednost s datom veličinom prozora. Da bismo riješili ovaj problem, implementirat ćemo funkciju koja uzima ulazne podatke i veličinu prozora kao argumente i vraća srednju vrijednost pomoću numpy. Evo koda za rješenje:
uvoz numpy kao np
def rolling_mean(podaci, veličina_prozora):
if window_size <= 0: povisi ValueError("Veličina prozora mora biti veća od 0") cumsum = np.cumsum(data) cumsum[window_size:] = cumsum[:-window_size] + data[window_size-1:] - data[ :-window_size] return cumsum[veličina_prozora - 1:] / window_size [/code]
Korak po korak objašnjenje koda
1. Prvo uvozimo numpy biblioteku kao np, što je standardna konvencija u Python zajednici.
2. Zatim definiramo funkciju rolling_mean, koja uzima dva argumenta: ulazne podatke i veličinu prozora. Očekuje se da će ulazni podaci biti jednodimenzionalni numpy niz, a veličina prozora je cijeli broj veći od 0.
3. Zatim provjeravamo da li je veličina prozora veća od 0. Ako nije, podižemo ValueError sa odgovarajućom porukom.
4. Izračunavamo kumulativni zbir ulaznih podataka koristeći funkciju numpy cumsum, koja izračunava kumulativni zbir elemenata duž date ose.
5. Glavni proračun se dešava u sljedećem redu, gdje ažuriramo niz kumulativnih suma oduzimanjem i dodavanjem odgovarajućih elemenata koji odgovaraju veličini prozora. Ovo je efikasniji pristup u poređenju sa upotrebom petlji ili shvaćanja liste jer su numpy operacije vektorizovane i optimizovane za performanse.
6. Konačno, vraćamo srednju vrijednost dijeljenjem ažuriranog niza kumulativne sume veličinom prozora, počevši od indeksa 'window_size – 1'.
Funkcija rolling_mean sada se može koristiti za izvođenje kalkulacija rotirajućih prozora na bilo kojem jednodimenzionalnom nizu brojeva.
Slične biblioteke i funkcije
- Pande: Ova popularna biblioteka za manipulaciju podacima i analizu u Pythonu pruža ugrađenu metodu kotrljanja koja pojednostavljuje proces kalkulacija prozora na pandas DataFrame i Series objektima.
- SciPy: Biblioteka SciPy, koja se zasniva na numpyju, nudi dodatne funkcije za obradu signala, kao što je funkcija uniform_filter za izvođenje pokretnog prosjeka sa datom veličinom prozora.
U zaključku, numpy omogućava efikasnu i raznovrsnu implementaciju izračunavanja rolo prozora. Razumijevanjem osnovnih koncepata i tehnika, moguće je bolje analizirati njihove podatke i otkriti skrivene obrasce i trendove. Nadalje, korištenje sličnih biblioteka i funkcija iz pandas i SciPy-ja može dodatno poboljšati mogućnosti analize pomičnih prozora u Pythonu.