tanszek:oktatas:muszaki_informatika:numpy_cheatsheet
This is an old revision of the document!
Tömb létrehozása
- Python listából / tuple-ből NumPy tömböt hoz létre: np.array(iterable)
- Tartomány generálása (mint range, de array): np.arange(start, stop, step)
- Egyenletesen elosztott num darab érték adott intervallumban: np.linspace(start, stop, num)
- Nullákkal feltöltött tömb: np.zeros(shape)
- 1-esekkel feltöltött tömb: np.ones(shape)
- Inicializálatlan tömb (gyors, de szemétértékkel): np.empty(shape)
- Adott értékkel feltöltött tömb: np.full(shape, value)
- Egységmátrix: np.eye(n)
- 0–1 közötti egyenletes eloszlás: np.random.rand(…)
- Normál eloszlás: np.random.randn(…)
- Véletlen egész számok: np.random.randint(low, high, size)
Tömb tulajdonságok
- Dimenziók mérete: arr.shape
- Dimenziók száma: arr.ndim
- Elemek száma: arr.size
- Adattípus: arr.dtype
- Típuskonverzió: arr.astype(type)
Matematikai alapműveletek (vektorizált)
- Elemankénti műveletek.:
- np.add(a, b)
- np.subtract(a, b)
- np.multiply(a, b)
- np.divide(a, b)
- Hatványozás: np.power(a, b)
- Négyzetgyök: np.sqrt(a)
- Abszolútérték: np.abs(a)
- e^x: np.exp(a)
- Természetes logaritmus: np.log(a)
Aggregáló (redukciós) függvények
- Összegzés: np.sum(a, axis=None)
- Átlag: np.mean(a, axis=None)
- Medián: np.median(a)
- Szórás: np.std(a)
- Variancia: np.var(a)
- Minimum: np.min(a)
- Maximum: np.max(a)
- Minimum indexe: np.argmin(a)
- Maximum indexe: np.argmax(a)
- Szorzat: np.prod(a)
Mátrix- és lineáris algebra
- Skalárszorzat / mátrixszorzás (régebbi forma): np.dot(a, b)
- Modern mátrixszorzás operátor: a @ b
- Mátrixszorzás: np.matmul(a, b)
- Transzponálás: np.transpose(a) / a.T
- Inverz mátrix: np.linalg.inv(a)
- Determináns: np.linalg.det(a)
- Sajátértékek, sajátvektorok: np.linalg.eig(a)
- Lineáris egyenletrendszer megoldása: np.linalg.solve(A, b)
Indexelés és szűrés
- Boolean indexelés, feltételes szűrés: a[a > 5]
- Feltétel indexei: np.where(condition)
- Nem nulla elemek indexei: np.nonzero(a)
- Értékek levágása intervallumra: np.clip(a, min, max)
Tömb átalakítás
- Átalakítás: np.reshape(a, shape)
- 1D-re lapítás (másolat): a.flatten()
- 1D-re lapítás (nézet, ha lehet): a.ravel()
- Összefűzés: np.concatenate([a, b], axis=0)
- Függőleges összefűzés: np.vstack([…])
- Vízszintes összefűzés: np.hstack([…])
- Felosztás: np.split(a, indices)
Rendezés és keresés
- Rendezett másolat: np.sort(a)
- Helyben rendez: a.sort()
- Rendezési indexek: np.argsort(a)
- Egyedi elemek: np.unique(a)
Statisztikai / speciális
- Percentilis: np.percentile(a, q)
- Kumulatív összeg: np.cumsum(a)
- Kumulatív szorzat: np.cumprod(a)
- Korreláció: np.corrcoef(a, b)
- Konvolúció (pl. mozgóátlag): np.convolve(a, kernel, mode)
Broadcasting (nem függvény, hanem mechanizmus)
- Automatikus méretillesztés műveleteknél:
a + 5 a + np.array([1,2,3])
Fontos logikai függvények
- Minden elem igaz? np.all(condition)
- Van legalább egy igaz? np.any(condition)
- És: np.logical_and(a, b)
- Vagy: np.logical_or(a, b)
Fájlkezelés NumPy-val
- Szövegfájl betöltése: np.loadtxt(“file.txt”)
- Mentés szövegfájlba: np.savetxt(“file.txt”, array)
- Bináris mentés: np.save(“file.npy”, array)
- Bináris betöltés: np.load(“file.npy”)
A legfontosabb 20, amit tudni kell
array, arange, linspace zeros, ones, full shape, reshape sum, mean, std, min, max argmax, argmin dot / @ where sort, argsort concatenate unique loadtxt, savetxt
Gyakorló feladatok
I. Tömb létrehozás: Alap generálás
- Hozz létre egy 0–99 közötti egész számokat tartalmazó tömböt np.arange() segítségével.
- Hozz létre 50 darab egyenletesen elosztott számot 0 és 1 között np.linspace()-szel.
- Készíts egy 4×4-es nullmátrixot.
- Készíts egy 3×5-ös, 7-esekkel feltöltött mátrixot.
import numpy as np # 1 a = np.arange(100) # 2 b = np.linspace(0, 1, 50) # 3 c = np.zeros((4, 4)) # 4 d = np.full((3, 5), 7) print(a, b, c, d)
II. Tömb tulajdonságok és átalakítás: Shape és reshape
- Generálj egy 1D tömböt 0–23-ig.
- Alakítsd át 4×6-os mátrixszá.
- Transzponáld.
- Lapítsd vissza 1D-be flatten() és ravel() segítségével.
- Ellenőrizd shape, ndim, size, dtype.
arr = np.arange(24) matrix = arr.reshape(4, 6) transposed = matrix.T flat1 = matrix.flatten() flat2 = matrix.ravel() print(matrix.shape) print(matrix.ndim) print(matrix.size) print(matrix.dtype)
III. Vektorizált matematikai műveletek: Elemankénti műveletek
Hozz létre két 10 elemű tömböt.
- Számold ki:
- összegüket
- különbségüket
- szorzatukat
- hányadosukat
- Emeld az egyik tömb elemeit négyzetre.
- Számold ki a négyzetgyöküket.
- Alkalmazz logaritmust és exponenciális függvényt.
a = np.arange(1, 11) b = np.arange(11, 21) osszeg = a + b kulonbseg = a - b szorzat = a * b hanyados = a / b negyzet = a ** 2 gyok = np.sqrt(a) log = np.log(a) exp = np.exp(a) print(osszeg, kulonbseg, szorzat, hanyados)
IV. Aggregáló függvények: Statisztikai elemzés
- Generálj 1000 normál eloszlású számot.
- Számold ki:
- átlag
- medián
- szórás
- variancia
- minimum
- maximum
- Add meg a legnagyobb elem indexét.
- Számold ki az első 100 elem összegét.
data = np.random.randn(1000)
print("Átlag:", np.mean(data))
print("Medián:", np.median(data))
print("Szórás:", np.std(data))
print("Variancia:", np.var(data))
print("Min:", np.min(data))
print("Max:", np.max(data))
print("Max index:", np.argmax(data))
print("Első 100 elem összege:", np.sum(data[:100]))
V. Mátrixműveletek: Lineáris algebra
- Generálj két 3×3-as mátrixot.
- Szorozd össze őket:
- np.dot()
- @ operátorral
- Számold ki az egyik determinánsát.
- Számold ki az inverzét.
- Oldj meg egy Ax = b lineáris egyenletrendszert.
A = np.random.randint(1, 10, (3, 3))
B = np.random.randint(1, 10, (3, 3))
dot1 = np.dot(A, B)
dot2 = A @ B
det = np.linalg.det(A)
# Inverz csak ha invertálható
if det != 0:
inv = np.linalg.inv(A)
b = np.array([1, 2, 3])
if det != 0:
x = np.linalg.solve(A, b)
print(dot1, det)
VI. Boolean indexelés és szűrés: Feltételes műveletek
- Generálj 100 elemből álló véletlen tömböt.
- Szűrd ki az 50-nél nagyobb elemeket.
- Cseréld az 50 alatti elemeket nullára np.where() segítségével.
- Számold meg, hány elem nagyobb 75-nél.
- Használd np.clip()-et az értékek 10–90 közé szorítására.
arr = np.random.randint(0, 100, 100) nagyobb_50 = arr[arr > 50] uj = np.where(arr < 50, 0, arr) db_75 = np.sum(arr > 75) clipped = np.clip(arr, 10, 90) print(nagyobb_50, db_75)
VII. Összefűzés és darabolás: Tömbmanipuláció
- Hozz létre két 2×3-as mátrixot.
- Fűzd össze:
- függőlegesen (vstack)
- vízszintesen (hstack)
- Használd concatenate()-et.
- Oszd fel a mátrixot 3 részre split() segítségével.
A = np.random.randint(1, 10, (2, 3)) B = np.random.randint(1, 10, (2, 3)) v = np.vstack((A, B)) h = np.hstack((A, B)) c = np.concatenate((A, B), axis=0) split = np.split(v, 2) print(v, h)
VIII. Rendezés és keresés:mRendezési feladatok
- Generálj 20 véletlen számot.
- Rendezd növekvő sorrendbe.
- Add meg a rendezési indexeket (argsort).
- Találd meg az egyedi elemeket (unique).
- Számold ki a 90. percentilist.
arr = np.random.randint(0, 50, 20) sorted_arr = np.sort(arr) indices = np.argsort(arr) unique_vals = np.unique(arr) p90 = np.percentile(arr, 90) print(sorted_arr, indices, unique_vals, p90)
IX. Haladó – Idősor feldolgozás:mMozgóátlag és kumuláció
- Generálj 365 napi adatot.
- Számold ki:
- kumulatív összeget (cumsum)
- kumulatív szorzatot (cumprod)
- Számolj 7 napos mozgóátlagot np.convolve() segítségével.
- Határozd meg azokat a napokat, ahol az érték nagyobb az éves átlagnál.
data = np.random.randn(365) cumsum = np.cumsum(data) cumprod = np.cumprod(data) kernel = np.ones(7) / 7 moving_avg = np.convolve(data, kernel, mode="valid") atlag = np.mean(data) nagyobb = data[data > atlag] print(cumsum[:5], moving_avg[:5])
X. NumPy fájlkezelés: Fájlműveletek
- Ments el egy tömböt .txt formátumban (savetxt).
- Olvasd vissza (loadtxt).
- Mentsd el .npy formátumban.
- Töltsd vissza.
- Ellenőrizd, hogy a két tömb megegyezik-e (np.array_equal).
arr = np.random.randint(1, 100, (5, 5))
np.savetxt("adat.txt", arr)
loaded_txt = np.loadtxt("adat.txt")
np.save("adat.npy", arr)
loaded_npy = np.load("adat.npy")
print(np.array_equal(arr, loaded_txt))
print(np.array_equal(arr, loaded_npy))
XI. Broadcasting gyakorlás: Méretillesztés
- Adj hozzá egy 1D tömböt egy 2D mátrix minden sorához.
- Normalizálj soronként.
- Vond ki minden oszlopból az oszlopátlagot.
- Szorozd meg az egész mátrixot egy skalárral.
- Ellenőrizd np.all() és np.any() használatával bizonyos feltételeket.
matrix = np.random.randint(1, 10, (4, 3)) vector = np.array([1, 2, 3]) # Soronkénti hozzáadás result = matrix + vector # Soronkénti normalizálás row_mean = np.mean(matrix, axis=1, keepdims=True) norm = matrix - row_mean # Oszlopátlag kivonása col_mean = np.mean(matrix, axis=0) centered = matrix - col_mean # Skalárszorzás scaled = matrix * 10 print(np.all(matrix > 0)) print(np.any(matrix > 8))
tanszek/oktatas/muszaki_informatika/numpy_cheatsheet.1772177267.txt.gz · Last modified: 2026/02/27 07:27 by szabom
