User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:numpy_i._toemboek_indexeles_muveletek

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:muszaki_informatika:numpy_i._toemboek_indexeles_muveletek [2026/02/26 21:22] – created szabomtanszek:oktatas:muszaki_informatika:numpy_i._toemboek_indexeles_muveletek [2026/02/27 06:29] (current) – [Összefoglaló feladatok] szabom
Line 17: Line 17:
 ==== Lista vs. NumPy array ==== ==== Lista vs. NumPy array ====
  
 +<sxh python>
 import numpy as np import numpy as np
  
Line 28: Line 29:
 print(arr * 2) print(arr * 2)
 #Ez elemenként szoroz. #Ez elemenként szoroz.
 +</sxh>
  
 **Feladat:**  **Feladat:** 
Line 35: Line 36:
   * Szorozd meg 3-mal   * Szorozd meg 3-mal
  
 +<sxh python>
 import numpy as np import numpy as np
  
Line 48: Line 49:
 np.arange(0, 10, 2) #mint range, de array np.arange(0, 10, 2) #mint range, de array
 np.linspace(0, 1, 5) #intervallum felosztása np.linspace(0, 1, 5) #intervallum felosztása
 +</sxh>
  
 **Feladat:** Hozz létre egy array-t 0-tól 20-ig 5-ös lépéssel. Hozz létre 6 darab 1-est tartalmazó tömböt. **Feladat:** Hozz létre egy array-t 0-tól 20-ig 5-ös lépéssel. Hozz létre 6 darab 1-est tartalmazó tömböt.
 +<sxh python>
 import numpy as np import numpy as np
  
Line 66: Line 67:
 print(arr[0]) print(arr[0])
 print(arr[1:4]) print(arr[1:4])
 +</sxh>
  
 **Szeletelés: start:end** **Szeletelés: start:end**
Line 72: Line 73:
 **Feladat:** Hozz létre egy 0–9-ig terjedő array-t. Írd ki az első 5 elemet. Írd ki az utolsó 3 elemet **Feladat:** Hozz létre egy 0–9-ig terjedő array-t. Írd ki az első 5 elemet. Írd ki az utolsó 3 elemet
  
 +<sxh python>
 import numpy as np import numpy as np
  
Line 79: Line 80:
 print(arr[:5]) print(arr[:5])
 print(arr[-3:]) print(arr[-3:])
 +</sxh>
  
 ---- ----
Line 85: Line 86:
  
 NumPy műveletek elemenként történnek. NumPy műveletek elemenként történnek.
 +<sxh python>
 arr = np.array([1, 2, 3, 4]) arr = np.array([1, 2, 3, 4])
 print(arr + 5) print(arr + 5)
 print(arr ** 2) print(arr ** 2)
 print(arr.mean()) print(arr.mean())
 +</sxh>
  
 Fontos: Fontos:
Line 97: Line 99:
 Feladat: Hozz létre egy array-t 1–5-ig. Számold ki a négyzetüket. Számold ki az átlagukat Feladat: Hozz létre egy array-t 1–5-ig. Számold ki a négyzetüket. Számold ki az átlagukat
  
 +<sxh python>
 import numpy as np import numpy as np
  
Line 107: Line 109:
 print("Négyzetek:", negyzet) print("Négyzetek:", negyzet)
 print("Átlag:", atlag) print("Átlag:", atlag)
 +</sxh>
  
 ---- ----
Line 117: Line 119:
   * Kiírja az eredményeket   * Kiírja az eredményeket
  
 +<sxh python>
 import numpy as np import numpy as np
  
Line 123: Line 126:
 print("Átlag:", np.mean(adat)) print("Átlag:", np.mean(adat))
 print("Szórás:", np.std(adat)) print("Szórás:", np.std(adat))
 +</sxh>
 +
 +2. Feladat – Lista vs NumPy teljesítmény és műveletek
 +
 +Hozz létre 1 millió elemű számlistát:
 +  * sima Python listával
 +  * NumPy tömbbel
 +  * Szorozd meg minden elemét 2-vel:
 +  * listán ciklussal
 +  * NumPy array-n vektorizáltan
 +  * Mérd az időt.
 +  * Hasonlítsd össze az eredményeket.
 +
 +<sxh python>
 +import numpy as np
 +import time
 +
 +# Lista
 +lista = list(range(1_000_000))
 +
 +start = time.time()
 +uj_lista = []
 +for x in lista:
 +    uj_lista.append(x * 2)
 +print("Lista idő:", time.time() - start)
 +
 +# NumPy
 +array = np.arange(1_000_000)
 +
 +start = time.time()
 +uj_array = array * 2
 +print("NumPy idő:", time.time() - start)
 +</sxh>
 +
 +3. Feladat – Fájlbeolvasás és statisztikai elemzés
 +
 +Adott egy adatok.txt fájl, amely soronként számokat tartalmaz.
 +
 +  * Olvasd be listába.
 +  * Alakítsd NumPy tömbbé.
 +  * Számold ki:
 +     * átlag
 +     * szórás
 +     * minimum
 +     * maximum
 +  * Szűrd ki a 10 feletti értékeket (vektorizáltan).
 +
 +<sxh python>
 +import numpy as np
 +
 +def beolvasas(fajlnev):
 +    lista = []
 +    try:
 +        with open(fajlnev, "r") as f:
 +            for sor in f:
 +                lista.append(float(sor.strip()))
 +    except FileNotFoundError:
 +        print("A fájl nem található!")
 +    return lista
 +
 +lista = beolvasas("adatok.txt")
 +array = np.array(lista)
 +
 +print("Átlag:", np.mean(array))
 +print("Szórás:", np.std(array))
 +print("Minimum:", np.min(array))
 +print("Maximum:", np.max(array))
 +
 +szurt = array[array > 10]
 +print("10 felettiek:", szurt)
 +</sxh>
 +
 +4. Feladat – Mátrixműveletek és vektorizált számítás
 +
 +  * Generálj egy 5x5-ös véletlen mátrixot.
 +  * Számold ki:
 +     * soronkénti összeget
 +     * oszloponkénti átlagot
 +     * Normalizáld a mátrixot (0–1 közé skálázás).
 +     * Ne használj ciklust, csak NumPy műveleteket.
 +
 +<sxh python>
 +import numpy as np
 +
 +matrix = np.random.randint(1, 100, (5, 5))
 +
 +print("Mátrix:\n", matrix)
 +
 +# Sorösszeg
 +sor_osszeg = np.sum(matrix, axis=1)
 +print("Sorösszegek:", sor_osszeg)
 +
 +# Oszlopátlag
 +oszlop_atlag = np.mean(matrix, axis=0)
 +print("Oszlopátlag:", oszlop_atlag)
 +
 +# Normalizálás
 +min_val = np.min(matrix)
 +max_val = np.max(matrix)
 +
 +normalizalt = (matrix - min_val) / (max_val - min_val)
 +print("Normalizált mátrix:\n", normalizalt)
 +</sxh>
 +
 +5. Feladat – Két dimenziós adatfeldolgozás (vizsgaeredmények)
 +
 +  * Egy 2D NumPy tömb sorai diákok, oszlopai tantárgyak pontszámai.
 +  * Számold ki minden diák átlagát.
 +  * Számold ki a tantárgyankénti átlagot.
 +  * Szűrd ki azokat a diákokat, akiknek az átlaga 60 alatt van.
 +  * Hasonlítsd össze listás és NumPy megoldással.
 +
 +<sxh python>
 +import numpy as np
 +
 +pontok = np.array([
 +    [70, 80, 90],
 +    [50, 40, 60],
 +    [90, 95, 100],
 +    [30, 50, 45]
 +])
 +
 +# Diák átlag
 +diak_atlag = np.mean(pontok, axis=1)
 +print("Diák átlagok:", diak_atlag)
 +
 +# Tantárgy átlag
 +tantargy_atlag = np.mean(pontok, axis=0)
 +print("Tantárgy átlagok:", tantargy_atlag)
 +
 +# Bukottak
 +bukott_index = np.where(diak_atlag < 60)
 +print("Bukott diák indexek:", bukott_index)
 +</sxh>
 +
 +6. Feladat – Idősoros adatelemzés (komplex)
 +
 +  * Generálj 365 napos hőmérsékleti adatot.
 +  * Számold ki:
 +     * éves átlag
 +     * legmelegebb 10 nap
 +     * hány nap volt 30°C felett
 +     * Mozgóátlag (7 napos).
 +  * Oldd meg ciklus nélkül, vektorizáltan.
 +
 +<sxh python>
 +import numpy as np
 +
 +# Generált adatok
 +homerseklet = np.random.normal(20, 10, 365)
 +
 +# Éves átlag
 +print("Éves átlag:", np.mean(homerseklet))
 +
 +# Legmelegebb 10 nap
 +legmelegebb = np.sort(homerseklet)[-10:]
 +print("Top 10 meleg nap:", legmelegebb)
 +
 +# 30 fok feletti napok
 +print("30 fok feletti napok száma:", np.sum(homerseklet > 30))
 +
 +# 7 napos mozgóátlag
 +kernel = np.ones(7) / 7
 +mozgo_atlag = np.convolve(homerseklet, kernel, mode='valid')
  
-2. feladat+print("Mozgóátlag első 10 értéke:", mozgo_atlag[:10]) 
 +</sxh>
tanszek/oktatas/muszaki_informatika/numpy_i._toemboek_indexeles_muveletek.1772140954.txt.gz · Last modified: 2026/02/26 21:22 by szabom