Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. NumPy va ndarray nima
- 2.2. Massiv yaratish
- 2.3. Massiv atributlari (shape, dtype)
- 2.4. Vektorlangan amal
- 2.5. Agregat (sum, mean, max)
- 2.6. Shakl o'zgartirish (reshape)
- 2.7. Ro'yxat vs NumPy
- 2.8. Nega NumPy tez
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Massiv yaratish va atributlar
- Misol 2 — Vektorlangan amal
- Misol 3 — Agregat va shakl
- Misol 4 — Amaliy: baholar tahlili
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
24.1-dars: NumPy — massiv
24-QISM — MA'LUMOT TAHLILI · 1-dars
1. Kirish va motivatsiya
Shu paytgacha ma'lumotni Python ro'yxatlari (list) bilan saqladik. Ro'yxat moslashuvchan, lekin son bilan ishlashda sekin va noqulay: million sonni qo'shish uchun for sikl, har element alohida obyekt (xotira ko'p). Ilmiy hisoblash, ma'lumot tahlili, mashinaviy o'qitish (25-qism) — bularda katta son massivlari ustida tez amal kerak.
NumPy (Numerical Python) — Python'ning ilmiy hisoblash poydevori: ndarray (n-o'lchamli massiv) — bir xil turdagi sonlarni ixcham, tez saqlaydi. Amal vektorlangan (butun massiv birdaniga — a + 10, siklsiz), C tezligida. pandas 24.5-bob, Matplotlib 24.13-bob, scikit-learn (25), PyTorch — hammasi NumPy ustida. NumPy'ni bilish — ma'lumot tahlilining asosi.
Real vaziyat. Bir hisoblash million o'lchovni qayta ishlardi — Python ro'yxat + for bilan 8 soniya. NumPy massivga o'tdi: natija = massiv * 2 + 5 (bir qator, siklsiz) — 0.05 soniya. 150 barobar tez. Sabab: NumPy ma'lumotni uzluksiz xotirada (C massivi) saqlaydi va amalni C darajasida (vektorlangan) bajaradi. Katta ma'lumot uchun NumPy — zaruriy.
Bu darsda NumPy'ni — ndarray, yaratish, vektorlangan amalni o'rganamiz.
Bu darsda:
- NumPy va
ndarraynima - Massiv yaratish (
array,arange,zeros) - Massiv atributlari (shape, dtype)
- Vektorlangan amal
- Agregat (sum, mean, max)
- Shakl o'zgartirish (reshape)
- Ro'yxat vs NumPy
- Amaliy: massiv bilan hisoblash
ℹ Misollarda NumPy (
import numpy as np) bilan sinaladi.
2. Nazariya — chuqur tushuntirish
2.1. NumPy va ndarray nima
NumPy'ning yuragi — ndarray (massiv):
import numpy as np
a = np.array([1, 2, 3, 4, 5]) # ndarray NumPy — Python ilmiy hisoblash kutubxonasi. ndarray (n-dimensional array) — bir xil turdagi (masalan, barcha int yoki float) sonlarni uzluksiz xotirada saqlaydigan massiv. Ro'yxatdan farq: bir tur (ixcham), tez amal (vektorlangan, C darajasi). import numpy as np — an'anaviy nom. Ma'lumot tahlilining poydevori.
2.2. Massiv yaratish
Massiv yaratishning bir necha yo'li:
np.array([1, 2, 3]) # ro'yxatdan
np.arange(0, 10, 2) # [0 2 4 6 8] (start, stop, qadam)
np.zeros(3) # [0. 0. 0.]
np.ones((2, 3)) # 2×3 birlar
np.linspace(0, 1, 5) # 0 dan 1 gacha 5 ta teng
np.array([[1, 2], [3, 4]]) # 2o'lchamli Massiv yaratish: np.array(ro'yxat) (ro'yxatdan), np.arange(boshi, oxiri, qadam) (ketma-ketlik — range kabi), np.zeros/np.ones (nol/bir — shakl bilan), np.linspace(a, b, n) (a–b oraliqda n ta teng nuqta). Ko'p o'lchamli — ichma-ich ro'yxat. Bular ma'lumot yaratish/tayyorlashda kerak.
2.3. Massiv atributlari (shape, dtype)
Massiv o'zi haqida ma'lumot:
a = np.array([[1, 2, 3], [4, 5, 6]])
a.shape # (2, 3) — o'lcham (2 qator, 3 ustun)
a.ndim # 2 — o'lchamlar soni
a.size # 6 — jami element
a.dtype # int64 — element turi Massiv atributlari: .shape (o'lcham — (qator, ustun)), .ndim (o'lchamlar soni — 1D, 2D), .size (jami element), .dtype (element turi — int64, float64). dtype muhim: NumPy bir turdagi (tez, ixcham). .shape — ma'lumot shaklini tushunish uchun asosiy.
2.4. Vektorlangan amal
NumPy'ning kuchi — siklsiz amal:
a = np.array([1, 2, 3, 4])
a + 10 # [11 12 13 14] — har elementga +10
a * 2 # [2 4 6 8]
a ** 2 # [1 4 9 16]
a + a # [2 4 6 8] — element-element
a > 2 # [False False True True] Vektorlangan amal (vectorization) — butun massiv ustida birdaniga amal (siklsiz): a + 10 (har elementga), a * b (element-element), a > 2 (shart — bool massiv). Bu Python sikldan tezroq (C darajasida) va qisqaroq (bir qator). NumPy'ning asosiy g'oyasi: sikl o'rniga massiv amali.
2.5. Agregat (sum, mean, max)
Massivni bir songa jamlash:
a = np.array([1, 2, 3, 4, 5])
a.sum() # 15
a.mean() # 3.0 (o'rtacha)
a.max() # 5
a.min() # 1
a.std() # standart chetlanish
# 2D:
m.sum(axis=0) # ustunlar bo'yicha
m.sum(axis=1) # qatorlar bo'yicha Agregat funksiyalari: .sum() (yig'indi), .mean() (o'rtacha), .max()/.min(), .std() (standart chetlanish, 24.16). 2D'da axis bilan: axis=0 (ustunlar bo'yicha — pastga), axis=1 (qatorlar bo'yicha — o'ngga). Bu ma'lumot xulosasi (statistika) uchun asosiy — 24.16'da chuqurroq.
2.6. Shakl o'zgartirish (reshape)
Massiv shaklini o'zgartirish:
a = np.arange(6) # [0 1 2 3 4 5]
a.reshape(2, 3) # [[0 1 2] [3 4 5]]
a.reshape(3, 2) # [[0 1] [2 3] [4 5]]
m.flatten() # 2D → 1D (yassila)
m.T # transpozitsiya (qator↔ustun) reshape(qator, ustun) — massiv shaklini o'zgartiradi (element soni bir xil bo'lsin — 6 = 2×3). .flatten() (ko'p o'lchamli → 1D), .T (transpozitsiya — qator va ustun almashadi). Shakl o'zgartirish — ma'lumotni tahlil/model uchun to'g'ri shaklga keltirishda muhim.
2.7. Ro'yxat vs NumPy
| Xususiyat | Ro'yxat (list) |
NumPy (ndarray) |
|---|---|---|
| Tur | Aralash | Bir xil (dtype) |
| Xotira | Ko'p (har obyekt) | Kam (uzluksiz) |
| Amal | Sikl | Vektorlangan |
| Tezlik | Sekin | Tez (C) |
| Maqsad | Umumiy | Son hisoblash |
Ro'yxat — umumiy (aralash tur, moslashuvchan), lekin son bilan sekin (sikl, har element obyekt). NumPy — bir tur (ixcham), vektorlangan (tez, C darajasi) — son massivlari uchun. Katta son ma'lumoti → NumPy; kichik aralash → ro'yxat. Ma'lumot tahlilida NumPy asos.
2.8. Nega NumPy tez
NumPy uch sabab bilan tez: 1) ma'lumot uzluksiz xotirada (C massivi — ro'yxat esa har element alohida obyekt, tarqoq), 2) amal C darajasida (Python sikl emas — vektorlangan), 3) bir tur (dtype — tekshirish kerak emas). Bu "ma'lumot joylashuvi va bir jinslilik tezlik beradi" tamoyili. Katta ma'lumotda bu farq 100+ barobar. NumPy — Python'ning tez son yadrosi (C/Fortran ustida).
3. Tez ma'lumotnoma
import numpy as np
# yaratish:
np.array([1, 2, 3]) # ro'yxatdan
np.arange(0, 10, 2) # [0 2 4 6 8]
np.zeros(3); np.ones((2, 3)) # nol/bir
np.linspace(0, 1, 5) # teng oraliq
# atribut:
a.shape; a.ndim; a.size; a.dtype
# vektorlangan amal:
a + 10; a * 2; a ** 2; a + b; a > 2
# agregat:
a.sum(); a.mean(); a.max(); a.min(); a.std()
m.sum(axis=0) # ustun bo'yicha
# shakl:
a.reshape(2, 3); a.flatten(); a.T
a[a > 2] # bool indeks (24.3)NumPy xulosasi
ndarray: bir tur, uzluksiz, tez · vektorlangan: siklsiz amal
shape/dtype: shakl/tur · agregat: sum/mean · reshape: shakl o'zgartir4. Batafsil misollar
Misollarda NumPy (
import numpy as np) bilan sinaladi.
Misol 1 — Massiv yaratish va atributlar
"""array/arange/zeros/linspace (yaratish); shape/ndim/size/dtype (atribut)."""
import numpy as np
def main() -> None:
print("=== 1. array (ro'yxatdan) ===")
a = np.array([1, 2, 3, 4, 5])
print(f" {a}, shape={a.shape}, size={a.size}, ndim={a.ndim}")
print("\n=== 2. arange / linspace ===")
print(f" arange(0,10,2): {np.arange(0, 10, 2)}")
print(f" linspace(0,1,5): {np.linspace(0, 1, 5)}")
print("\n=== 3. zeros / ones ===")
print(f" zeros(4): {np.zeros(4)}")
print(f" ones(2x3): {np.ones((2, 3)).tolist()}")
print("\n=== 4. 2D massiv va atributlar ===")
m = np.array([[1, 2, 3], [4, 5, 6]])
print(f" {m.tolist()}")
print(f" shape={m.shape}, ndim={m.ndim}, size={m.size}, dtype={m.dtype}")
print(" ⭐ ndarray — bir tur, shakl (shape) bilan")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. array (ro'yxatdan) ===
[1 2 3 4 5], shape=(5,), size=5, ndim=1
=== 2. arange / linspace ===
arange(0,10,2): [0 2 4 6 8]
linspace(0,1,5): [0. 0.25 0.5 0.75 1. ]
=== 3. zeros / ones ===
zeros(4): [0. 0. 0. 0.]
ones(2x3): [[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]
=== 4. 2D massiv va atributlar ===
[[1, 2, 3], [4, 5, 6]]
shape=(2, 3), ndim=2, size=6, dtype=int64
⭐ ndarray — bir tur, shakl (shape) bilanNima ko'rsatdi: 2.1, 2.2, 2.3-bo'limlar.
Misol 2 — Vektorlangan amal
"""vektorlangan amal: a+10 (skalyar), a*b (element-element), a**2, a>2 (bool) — siklsiz."""
import numpy as np
def main() -> None:
a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 20, 30, 40, 50])
print("=== 1. Skalyar amal (har elementga) ===")
print(f" a + 10 = {a + 10}")
print(f" a * 2 = {a * 2}")
print(f" a ** 2 = {a ** 2}")
print("\n=== 2. Element-element amal ===")
print(f" a + b = {a + b}")
print(f" b / a = {(b / a)}")
print("\n=== 3. Taqqoslash (bool massiv) ===")
print(f" a > 2 = {a > 2}")
print(f" a % 2 == 0 = {a % 2 == 0}")
print("\n=== 4. Amallar zanjiri (siklsiz) ===")
natija = a * 2 + 100
print(f" a*2+100 = {natija}")
print(" ⭐ vektorlangan — butun massiv birdaniga (sikl yo'q)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Skalyar amal (har elementga) ===
a + 10 = [11 12 13 14 15]
a * 2 = [ 2 4 6 8 10]
a ** 2 = [ 1 4 9 16 25]
=== 2. Element-element amal ===
a + b = [11 22 33 44 55]
b / a = [10. 10. 10. 10. 10.]
=== 3. Taqqoslash (bool massiv) ===
a > 2 = [False False True True True]
a % 2 == 0 = [False True False True False]
=== 4. Amallar zanjiri (siklsiz) ===
a*2+100 = [102 104 106 108 110]
⭐ vektorlangan — butun massiv birdaniga (sikl yo'q)Nima ko'rsatdi: 2.4-bo'lim.
Misol 3 — Agregat va shakl
"""agregat: sum/mean/max/min/std; 2D axis (0 ustun, 1 qator); reshape/T (shakl)."""
import numpy as np
def main() -> None:
a = np.array([2, 4, 6, 8, 10])
print("=== 1. Agregat (1D) ===")
print(f" sum={a.sum()}, mean={a.mean()}, max={a.max()}, min={a.min()}")
print(f" std={round(float(a.std()), 3)}")
print("\n=== 2. reshape (shakl o'zgartirish) ===")
b = np.arange(6)
print(f" arange(6): {b}")
print(f" reshape(2,3): {b.reshape(2, 3).tolist()}")
print("\n=== 3. 2D agregat (axis) ===")
m = np.array([[1, 2, 3], [4, 5, 6]])
print(f" butun sum: {m.sum()}")
print(f" axis=0 (ustun): {m.sum(axis=0)}")
print(f" axis=1 (qator): {m.sum(axis=1)}")
print("\n=== 4. Transpozitsiya (T) ===")
print(f" original: {m.tolist()}")
print(f" transpoz: {m.T.tolist()}")
print(" ⭐ agregat (sum/mean), reshape, axis — ma'lumot xulosasi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Agregat (1D) ===
sum=30, mean=6.0, max=10, min=2
std=2.828
=== 2. reshape (shakl o'zgartirish) ===
arange(6): [0 1 2 3 4 5]
reshape(2,3): [[0, 1, 2], [3, 4, 5]]
=== 3. 2D agregat (axis) ===
butun sum: 21
axis=0 (ustun): [5 7 9]
axis=1 (qator): [ 6 15]
=== 4. Transpozitsiya (T) ===
original: [[1, 2, 3], [4, 5, 6]]
transpoz: [[1, 4], [2, 5], [3, 6]]
⭐ agregat (sum/mean), reshape, axis — ma'lumot xulosasiNima ko'rsatdi: 2.5, 2.6-bo'limlar.
Misol 4 — Amaliy: baholar tahlili
Real misol: talaba baholarini NumPy bilan tahlil qilish — o'rtacha, eng yuqori, o'tganlar. Bu — massiv bilan hisoblashning namunasi.
"""to'liq tahlil: baholar massivi, statistika (mean/max/min/std), bool filtr (o'tganlar), vektorlangan."""
import numpy as np
def main() -> None:
# 8 talaba baholari
baholar = np.array([65, 80, 45, 90, 72, 88, 55, 95])
print("=== 1. Umumiy statistika ===")
print(f" talabalar: {baholar.size}")
print(f" o'rtacha: {baholar.mean()}")
print(f" eng yuqori: {baholar.max()}, eng past: {baholar.min()}")
print(f" std (tarqoqlik): {round(float(baholar.std()), 2)}")
print("\n=== 2. Bool filtr (o'tganlar — 60+) ===")
otganlar = baholar[baholar >= 60]
print(f" o'tganlar: {otganlar.tolist()}")
print(f" o'tganlar soni: {otganlar.size}")
print("\n=== 3. Vektorlangan (5 ball qo'shish) ===")
tuzatilgan = baholar + 5
tuzatilgan = np.minimum(tuzatilgan, 100) # 100 dan oshmasin
print(f" tuzatilgan: {tuzatilgan.tolist()}")
print("\n=== 4. Baho darajasi (bool sanash) ===")
alo = (baholar >= 85).sum()
yaxshi = ((baholar >= 70) & (baholar < 85)).sum()
print(f" a'lo (85+): {alo}, yaxshi (70-84): {yaxshi}")
print(" ⭐ NumPy — statistika, filtr, vektorlangan hisoblash")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Umumiy statistika ===
talabalar: 8
o'rtacha: 73.75
eng yuqori: 95, eng past: 45
std (tarqoqlik): 16.64
=== 2. Bool filtr (o'tganlar — 60+) ===
o'tganlar: [65, 80, 90, 72, 88, 95]
o'tganlar soni: 6
=== 3. Vektorlangan (5 ball qo'shish) ===
tuzatilgan: [70, 85, 50, 95, 77, 93, 60, 100]
=== 4. Baho darajasi (bool sanash) ===
a'lo (85+): 3, yaxshi (70-84): 2
⭐ NumPy — statistika, filtr, vektorlangan hisoblashNima ko'rsatdi: 2.1–2.8-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "NumPy = ro'yxat" | Bir tur, tez (C) |
"Massivda for kerak" |
Vektorlangan (siklsiz) |
| "Aralash tur mumkin" | Bir dtype (ixcham) |
| "NumPy sekin (Python)" | C darajasida (tez) |
"reshape nusxa" |
Odatda ko'rinish (view) |
"shape — element soni" |
O'lcham (qator, ustun) |
| "Kichik ma'lumotga NumPy" | Katta son uchun foydali |
"a + b — birlashtirish" |
Element-element qo'shish |
6. Keng tarqalgan xatolar va yechimlari
1. Massivda Python sikl (sekin)
for i in range(len(a)): a[i] *= 2 # ⚠️ sekin
a = a * 2 # ✅ vektorlangan2. Mos kelmaydigan shakl
np.array([1, 2]) + np.array([1, 2, 3]) # ⚠️ shape xato
# bir xil shakl yoki broadcasting 24.2-bob # ✅3. reshape element soni mos emas
np.arange(6).reshape(2, 4) # ⚠️ 6 ≠ 8
np.arange(6).reshape(2, 3) # ✅ (6 = 2×3)4. Butun son bo'linishi kutish
np.array([1, 2, 3]) / 2 # [0.5 1. 1.5] (float)
np.array([1, 2, 3]) // 2 # ✅ butun bo'lish5. list va ndarray aralashtirish
[1, 2, 3] * 2 # [1,2,3,1,2,3] (ro'yxat takror)
np.array([1, 2, 3]) * 2 # [2 4 6] (element)6. axis chalkashtirish
m.sum(axis=0) # ustunlar bo'yicha (pastga)
m.sum(axis=1) # qatorlar bo'yicha (o'ngga) # ✅ ehtiyot bo'l7. dtype e'tiborsiz (butun kesish)
a = np.array([1, 2, 3]) # int
a[0] = 1.9 # ⚠️ 1 (butun kesiladi)
a = np.array([1.0, 2, 3]) # ✅ float7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 24.2-dars: Amallar va broadcasting — vektorlangan chuqurroq
- 24.3-dars: Indeks va shakl — massiv kesish
- 24.5-dars: pandas — NumPy ustida (DataFrame)
- 24.13-dars: Matplotlib — massiv vizualizatsiya
- 25-qism: ML — NumPy massiv (model kirishi)
8. Eng yaxshi amaliyotlar
Son massivi uchun NumPy (ro'yxat emas).
Sikl o'rniga vektorlangan amal.
dtypeni bil (int/float — kesish).shapeni tekshir (mos amal).Agregat (
sum/mean) —axisbilan (2D).reshape— element soni mos.import numpy as np(an'anaviy).Katta ma'lumot — NumPy (tez, ixcham).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # NumPy nima?
2. # ndarray nima?
3. # np.array nima?
4. # np.arange nima?
5. # shape nima?
6. # dtype nima?
7. # vektorlangan amal nima?
8. # a + 10 nima qiladi?
9. # sum/mean nima?
10. # reshape nima?
11. # axis nima?
12. # ro'yxat vs NumPy?Javoblar
- Ilmiy hisoblash kutubxonasi (tez massiv)
- n-o'lchamli massiv (bir tur)
- Ro'yxatdan massiv
- Ketma-ketlik (range kabi)
- Massiv o'lchami (qator, ustun)
- Element turi (int64, float64)
- Butun massiv birdaniga (siklsiz)
- Har elementga 10 qo'shadi
- Yig'indi / o'rtacha
- Shakl o'zgartirish
- O'lcham yo'nalishi (0 ustun, 1 qator)
- NumPy bir tur, tez (son uchun)
Vazifa 2: Xatolarni tuzating
1. for i in range(len(a)): a[i] *= 2 # vektorlangan
2. np.arange(6).reshape(2, 4) # 2,3
3. [1, 2, 3] * 2 # np.array
4. np.array([1,2]) + np.array([1,2,3]) # bir shakl
5. # katta son ro'yxatda sikl # NumPyJavoblar
1. a = a * 2
2. np.arange(6).reshape(2, 3)
3. np.array([1, 2, 3]) * 2
4. # bir xil shakl (yoki broadcasting)
5. a = np.array(...); a * 2Vazifa 3: Massiv yaratish
Turli yo'l:
array,arangezeros,oneslinspace- 2D massiv
Vazifa 4: Vektorlangan amal
Siklsiz:
- Skalyar (
+,*) - Element-element
- Bool (
>) - Zanjir
Vazifa 5: Agregat
Statistika:
sum,meanmax,min,std- 2D
axis - Xulosa
Vazifa 6: Shakl
O'zgartirish:
reshapeflattenT(transpoz)- Test
Vazifa 7: O'ylash
NumPy son ma'lumotini bir turdagi, uzluksiz massivda saqlaydi va amalni vektorlangan (butun massiv birdaniga) bajaradi — Python sikli o'rniga. Bu 100+ barobar tezroq. Nima uchun "ma'lumot bir jinsli va uzluksiz bo'lsa tezroq", va bu "ma'lumotga yo'naltirilgan dizayn" (data-oriented) tamoyili bilan qanday bog'liq — nega ba'zan moslashuvchanlikni (ro'yxat) tezlikka (NumPy) almashtiramiz?
Javob
Qisqa javob: NumPy tez, chunki: 1) ma'lumot uzluksiz xotirada (C massivi — protsessor keshi samarali o'qiydi; ro'yxat tarqoq — har element alohida obyekt, xotirada sakrash), 2) bir jinsli (bir dtype — tur tekshirish kerak emas, amal to'g'ridan), 3) amal C darajasida (Python sikl emas — vektorlangan). "Ma'lumotga yo'naltirilgan dizayn" — ma'lumotni protsessor va xotira samarali ishlaydigan shaklda tashkil qilish. Moslashuvchanlik (ro'yxat — aralash tur, har xil amal) qulay, lekin sekin (tarqoq, obyekt). Tezlik kerak bo'lsa (katta ma'lumot), moslashuvchanlikni qurbon qilamiz (bir tur, qat'iy massiv). "To'g'ri ma'lumot tuzilishi — to'g'ri ish uchun".
1. Uzluksiz vs tarqoq xotira
| Ro'yxat | NumPy massiv |
|---|---|
| Har element — obyekt (tarqoq) | Uzluksiz (C massivi) |
| Xotirada sakrash | Ketma-ket (kesh samarali) |
| Tur tekshirish (har amal) | Bir tur (to'g'ridan) |
Protsessor uzluksiz xotirani (kesh) tez o'qiydi — tarqoq ma'lumot sekin (xotiraga murojaat).
2. Bir jinslilik (bir tur)
Ro'yxatda har element har xil tur bo'lishi mumkin — amal oldidan tekshirish. NumPy bir dtype — tekshirish yo'q, amal to'g'ridan (tez).
3. Vektorlangan (C darajasi)
a * 2 — Python sikl emas, C sikl (kompilyatsiyalangan). Yuz baravar tez.
4. Moslashuvchanlik vs tezlik
| Ro'yxat (moslashuvchan) | NumPy (tez) |
|---|---|
| Aralash tur | Bir tur |
| Har xil amal | Son amali |
| Sekin | Tez |
| Kichik/aralash | Katta son |
Tanlov: ma'lumot aralash, kichik → ro'yxat; son, katta → NumPy.
5. Muhandislik saboqlari
- Ma'lumot joylashuvi tezlikka ta'sir (uzluksiz — tez)
- Bir jinslilik — amal to'g'ridan
- Moslashuvchanlik vs tezlik tanlov
- To'g'ri tuzilma — to'g'ri ish uchun
6. Xulosa
- NumPy: uzluksiz + bir tur + vektorlangan
- Tezlik — xotira joylashuvi va bir jinslilik
- Moslashuvchanlikni tezlikka almashtiramiz
- Katta son ma'lumoti → NumPy
Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.
Xulosa
Bu darsda NumPy massivini o'rgandik.
Eng muhim uch fikr:
NumPy va
ndarray— tez son massivi. NumPy — Python ilmiy hisoblash poydevori; ndarray — bir xil turdagi (dtype) sonlarni uzluksiz xotirada saqlaydigan massiv. Ro'yxatdan farq: bir tur (ixcham), tez amal (vektorlangan). Yaratish:np.array(ro'yxat),np.arange(a, b, qadam),np.zeros/np.ones(shakl bilan),np.linspace(a, b, n)(teng oraliq). Atributlar:.shape(o'lcham),.ndim(o'lchamlar),.size(element soni),.dtype(tur). pandas, Matplotlib, scikit-learn, PyTorch — hammasi NumPy ustida.Vektorlangan amal — siklsiz. Vektorlangan amal — butun massiv ustida birdaniga:
a + 10(skalyar — har elementga),a * b(element-element),a > 2(bool massiv), zanjir (a * 2 + 100). Bu Python sikldan tezroq (C darajasida) va qisqaroq (bir qator). Agregat:.sum(),.mean(),.max()/.min(),.std()— 2D'daaxisbilan (axis=0ustun,axis=1qator). Shakl:reshape(qator, ustun)(element soni mos),.flatten()(1D),.T(transpozitsiya). Bool indeks:a[a > 2].Ro'yxat vs NumPy — qachon qaysi. Ro'yxat — umumiy (aralash tur, moslashuvchan), lekin son bilan sekin (sikl, har element obyekt); NumPy — bir tur (ixcham), vektorlangan (tez, C darajasi). NumPy tez uch sabab bilan: uzluksiz xotira (kesh samarali), bir jinslilik (
dtype— tur tekshirish yo'q), C darajasida amal. Bu "ma'lumotga yo'naltirilgan dizayn" — moslashuvchanlikni (ro'yxat) tezlikka (NumPy) almashtirish. Katta son ma'lumoti → NumPy; kichik aralash → ro'yxat. NumPy — ma'lumot tahlilining asosi.
Keyingi darsda NumPy amallar va broadcasting ni o'rganamiz: har xil shakldagi massivlar ustida amal (broadcasting), matematik funksiyalar — vektorlangan hisoblashni chuqurroq.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!