tanszek:oktatas:muszaki_informatika:numpy_ii._statisztika_matrixmuveletek
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| tanszek:oktatas:muszaki_informatika:numpy_ii._statisztika_matrixmuveletek [2026/02/27 06:42] – created szabom | tanszek:oktatas:muszaki_informatika:numpy_ii._statisztika_matrixmuveletek [2026/02/27 07:50] (current) – [Összefoglaló feladatok] szabom | ||
|---|---|---|---|
| Line 130: | Line 130: | ||
| - | 1.Feladat: Egy cég havi bevételeit tároljuk táblázatban (3 év × 12 hónap). | + | **1.Feladat: Egy cég havi bevételeit tároljuk táblázatban (3 év × 12 hónap).** |
| * Unordered List ItemGenerálj véletlen adatokat (pl. 100–500 közötti számokkal) | * Unordered List ItemGenerálj véletlen adatokat (pl. 100–500 közötti számokkal) | ||
| Line 145: | Line 145: | ||
| print(" | print(" | ||
| print(" | print(" | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **2. Feladat: Vizsgaeredmények elemzése (axis mély megértése)** | ||
| + | |||
| + | Adott egy 8×5-ös mátrix, ahol: | ||
| + | * sorok = diákok | ||
| + | * oszlopok = tantárgyak pontszámai | ||
| + | Feladat: | ||
| + | - Generálj 8×5-ös véletlen pontszám mátrixot (0–100). | ||
| + | - Számold ki: | ||
| + | - diákonkénti átlagot (soronként) | ||
| + | - tantárgyankénti átlagot (oszloponként) | ||
| + | - Határozd meg: | ||
| + | - melyik diák teljesített a legjobban | ||
| + | - melyik tantárgy átlaga a legrosszabb | ||
| + | - Szűrd ki azokat a diákokat, akiknek az átlaga 60 alatt van. | ||
| + | - Normalizáld a pontokat oszloponként (tantárgyanként). | ||
| + | |||
| + | //Kulcs: axis=0, axis=1, argmax, argmin, broadcasting.// | ||
| + | |||
| + | <sxh python> | ||
| + | import numpy as np | ||
| + | |||
| + | np.random.seed(0) | ||
| + | |||
| + | # 1. Generálás | ||
| + | pontok = np.random.randint(0, | ||
| + | print(" | ||
| + | #2. Átlagok | ||
| + | # Diákonként (sorok mentén → axis=1) | ||
| + | diak_atlag = np.mean(pontok, | ||
| + | |||
| + | # Tantárgyanként (oszlopok mentén → axis=0) | ||
| + | tantargy_atlag = np.mean(pontok, | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | #Miért axis=1 a sor? Mert az aggregálás a második dimenzió mentén történik → soron belül számolunk. | ||
| + | |||
| + | #3. Legjobb diák, legrosszabb tantárgy | ||
| + | legjobb_diak = np.argmax(diak_atlag) | ||
| + | legrosszabb_tantargy = np.argmin(tantargy_atlag) | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | #4. 60 alatti átlagú diákok | ||
| + | gyenge_diakok = np.where(diak_atlag < 60)[0] | ||
| + | print(" | ||
| + | |||
| + | #5. Oszloponkénti normalizálás | ||
| + | min_vals = np.min(pontok, | ||
| + | max_vals = np.max(pontok, | ||
| + | |||
| + | normalizalt = (pontok - min_vals) / (max_vals - min_vals) | ||
| + | print(" | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **3. feladat: Éves hőmérsékleti adatelemzés (idősor mátrix)** | ||
| + | |||
| + | Egy 12×30-as mátrix: | ||
| + | * sorok = hónapok | ||
| + | * oszlopok = napok | ||
| + | |||
| + | Feladat: | ||
| + | - Generálj normál eloszlású hőmérséklet adatokat. | ||
| + | - Számold ki: | ||
| + | - havi átlaghőmérsékletet | ||
| + | - napi éves átlaghőmérsékletet | ||
| + | - Határozd meg: | ||
| + | - melyik hónap volt a legmelegebb átlagosan | ||
| + | - melyik nap volt az év leghidegebb napja | ||
| + | - Számold ki, hány nap volt 30°C felett havonta. | ||
| + | - Standardizáld soronként (z-score normalizálás). | ||
| + | |||
| + | //Kulcs: mean(axis=1), | ||
| + | |||
| + | <sxh python> | ||
| + | # | ||
| + | np.random.seed(1) | ||
| + | homerseklet = np.random.normal(20, | ||
| + | |||
| + | #Havi és napi átlag | ||
| + | havi_atlag = np.mean(homerseklet, | ||
| + | napi_atlag = np.mean(homerseklet, | ||
| + | |||
| + | # | ||
| + | legmelegebb_honap = np.argmax(havi_atlag) | ||
| + | |||
| + | # | ||
| + | leghidegebb_nap = np.unravel_index(np.argmin(homerseklet), | ||
| + | |||
| + | #30°C feletti napok havonta | ||
| + | forro_napok = np.sum(homerseklet > 30, axis=1) | ||
| + | |||
| + | #Z-score standardizálás soronként | ||
| + | mean = np.mean(homerseklet, | ||
| + | std = np.std(homerseklet, | ||
| + | |||
| + | standardizalt = (homerseklet - mean) / std | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **4. feladat: Bevételi mátrix elemzése (összetett aggregáció)** | ||
| + | |||
| + | Egy 6×4-es mátrix: | ||
| + | * sorok = hónapok | ||
| + | * oszlopok = üzletek | ||
| + | |||
| + | Feladat: | ||
| + | - Generálj bevételi adatokat. | ||
| + | - Számold ki: | ||
| + | - üzletenkénti éves bevételt | ||
| + | - havi összbevételt | ||
| + | - Határozd meg: | ||
| + | - melyik üzlet teljesített legjobban összesítve | ||
| + | - melyik hónap volt a legerősebb | ||
| + | - Számold ki az egyes üzletek piaci részesedését (%) az éves összbevételből. | ||
| + | - Skálázd a mátrixot 0–1 közé globálisan. | ||
| + | |||
| + | //Kulcs: sum(axis=0), | ||
| + | |||
| + | <sxh python> | ||
| + | # | ||
| + | np.random.seed(2) | ||
| + | bevetel = np.random.randint(1000, | ||
| + | |||
| + | #Éves bevétel üzletenként | ||
| + | uzlet_eves = np.sum(bevetel, | ||
| + | |||
| + | #Havi összbevétel | ||
| + | havi_osszes = np.sum(bevetel, | ||
| + | |||
| + | #Legjobb üzlet | ||
| + | legjobb_uzlet = np.argmax(uzlet_eves) | ||
| + | |||
| + | #Legjobb hónap | ||
| + | legjobb_honap = np.argmax(havi_osszes) | ||
| + | |||
| + | #Piaci részesedés | ||
| + | osszes_bevetel = np.sum(bevetel) | ||
| + | reszesedes = uzlet_eves / osszes_bevetel * 100 | ||
| + | |||
| + | #Globális normalizálás | ||
| + | min_v = np.min(bevetel) | ||
| + | max_v = np.max(bevetel) | ||
| + | |||
| + | skala = (bevetel - min_v) / (max_v - min_v) | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **5. feladat: Képmanipulációs alapfeladat (mátrix mint kép)** | ||
| + | |||
| + | Egy 100×100-as mátrix egy szürkeárnyalatos képet reprezentál (0–255). | ||
| + | |||
| + | Feladat: | ||
| + | - Generálj egy ilyen mátrixot. | ||
| + | - Számold ki: | ||
| + | - teljes kép átlagfényességét | ||
| + | - soronkénti átlagfényességet | ||
| + | - Küszöbölés: | ||
| + | - Normalizáld oszloponként. | ||
| + | - Számold ki, hány pixel világosabb az átlagfényességnél. | ||
| + | |||
| + | //Kulcs: boolean indexelés + mean(axis=...).// | ||
| + | |||
| + | <sxh python> | ||
| + | # | ||
| + | np.random.seed(3) | ||
| + | kep = np.random.randint(0, | ||
| + | |||
| + | # | ||
| + | global_atlag = np.mean(kep) | ||
| + | sor_atlag = np.mean(kep, | ||
| + | |||
| + | # | ||
| + | binary = np.where(kep < 128, 0, 255) | ||
| + | |||
| + | # | ||
| + | min_col = np.min(kep, axis=0) | ||
| + | max_col = np.max(kep, axis=0) | ||
| + | |||
| + | norm_kep = (kep - min_col) / (max_col - min_col) | ||
| + | |||
| + | #Átlag feletti pixelek száma | ||
| + | vilagos_db = np.sum(kep > global_atlag) | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **6. feladat: Többdimenziós adat – Diák × Tantárgy × Félév** | ||
| + | |||
| + | Generálj egy 3D tömböt: 2×10×4 | ||
| + | * dimenzió = félév | ||
| + | * dimenzió = diák | ||
| + | * dimenzió = tantárgy | ||
| + | |||
| + | - Számold ki: | ||
| + | - diákonkénti átlagot félévenként | ||
| + | - tantárgyankénti átlagot teljes évre | ||
| + | - Határozd meg: | ||
| + | - melyik diák javított legtöbbet két félév között | ||
| + | - Szűrd ki azokat a diákokat, akiknek bármely félévben 50 alatti az átlaguk. | ||
| + | - Aggregáld az egész rendszert egyetlen globális átlagra. | ||
| + | - Normalizáld a 3D tömböt félévenként külön-külön. | ||
| + | |||
| + | //Kulcs: többtengelyes aggregáció (axis=(...)), | ||
| + | |||
| + | <sxh python> | ||
| + | #Geneálás | ||
| + | np.random.seed(4) | ||
| + | adat = np.random.randint(0, | ||
| + | |||
| + | #Diák átlag félévenként | ||
| + | diak_atlag = np.mean(adat, | ||
| + | |||
| + | #Tantárgy átlag teljes évre | ||
| + | tantargy_atlag = np.mean(adat, | ||
| + | |||
| + | #Legnagyobb javulás | ||
| + | javulas = diak_atlag[1] - diak_atlag[0] | ||
| + | legnagyobb_javulas = np.argmax(javulas) | ||
| + | |||
| + | #50 alatti átlag bármely félévben | ||
| + | gyenge = np.any(diak_atlag < 50, axis=0) | ||
| + | gyenge_indexek = np.where(gyenge)[0] | ||
| + | |||
| + | #Globális átlag | ||
| + | global_atlag = np.mean(adat) | ||
| + | |||
| + | # | ||
| + | min_vals = np.min(adat, | ||
| + | max_vals = np.max(adat, | ||
| + | |||
| + | normalizalt = (adat - min_vals) / (max_vals - min_vals) | ||
| </ | </ | ||
tanszek/oktatas/muszaki_informatika/numpy_ii._statisztika_matrixmuveletek.1772174524.txt.gz · Last modified: 2026/02/27 06:42 by szabom
