tanszek:oktatas:muszaki_informatika:numpy_i._toemboek_indexeles_muveletek
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| tanszek:oktatas:muszaki_informatika:numpy_i._toemboek_indexeles_muveletek [2026/02/26 21:22] – created szabom | tanszek: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. | ||
| + | </ | ||
| **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, | np.arange(0, | ||
| np.linspace(0, | np.linspace(0, | ||
| + | </ | ||
| **Feladat: | **Feladat: | ||
| + | <sxh python> | ||
| import numpy as np | import numpy as np | ||
| Line 66: | Line 67: | ||
| print(arr[0]) | print(arr[0]) | ||
| print(arr[1: | print(arr[1: | ||
| + | </ | ||
| **Szeletelés: | **Szeletelés: | ||
| Line 72: | Line 73: | ||
| **Feladat: | **Feladat: | ||
| + | <sxh python> | ||
| import numpy as np | import numpy as np | ||
| Line 79: | Line 80: | ||
| print(arr[: | print(arr[: | ||
| print(arr[-3: | print(arr[-3: | ||
| + | </ | ||
| ---- | ---- | ||
| 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, | arr = np.array([1, | ||
| print(arr + 5) | print(arr + 5) | ||
| print(arr ** 2) | print(arr ** 2) | ||
| print(arr.mean()) | print(arr.mean()) | ||
| + | </ | ||
| 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(" | print(" | ||
| print(" | print(" | ||
| + | </ | ||
| ---- | ---- | ||
| 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(" | print(" | ||
| print(" | print(" | ||
| + | </ | ||
| + | |||
| + | 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(" | ||
| + | |||
| + | # NumPy | ||
| + | array = np.arange(1_000_000) | ||
| + | |||
| + | start = time.time() | ||
| + | uj_array = array * 2 | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | for sor in f: | ||
| + | lista.append(float(sor.strip())) | ||
| + | except FileNotFoundError: | ||
| + | print(" | ||
| + | return lista | ||
| + | |||
| + | lista = beolvasas(" | ||
| + | array = np.array(lista) | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | szurt = array[array > 10] | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | |||
| + | print(" | ||
| + | |||
| + | # Sorösszeg | ||
| + | sor_osszeg = np.sum(matrix, | ||
| + | print(" | ||
| + | |||
| + | # Oszlopátlag | ||
| + | oszlop_atlag = np.mean(matrix, | ||
| + | print(" | ||
| + | |||
| + | # Normalizálás | ||
| + | min_val = np.min(matrix) | ||
| + | max_val = np.max(matrix) | ||
| + | |||
| + | normalizalt = (matrix - min_val) / (max_val - min_val) | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | print(" | ||
| + | |||
| + | # Tantárgy átlag | ||
| + | tantargy_atlag = np.mean(pontok, | ||
| + | print(" | ||
| + | |||
| + | # Bukottak | ||
| + | bukott_index = np.where(diak_atlag < 60) | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | |||
| + | # Éves átlag | ||
| + | print(" | ||
| + | |||
| + | # Legmelegebb 10 nap | ||
| + | legmelegebb = np.sort(homerseklet)[-10: | ||
| + | print(" | ||
| + | |||
| + | # 30 fok feletti napok | ||
| + | print(" | ||
| + | |||
| + | # 7 napos mozgóátlag | ||
| + | kernel = np.ones(7) / 7 | ||
| + | mozgo_atlag = np.convolve(homerseklet, | ||
| - | 2. feladat: | + | print(" |
| + | </ | ||
tanszek/oktatas/muszaki_informatika/numpy_i._toemboek_indexeles_muveletek.1772140954.txt.gz · Last modified: 2026/02/26 21:22 by szabom
