Barcha kurslar Yo'nalishlar Reyting Kirish Ro'yxatdan o'tish

Bu modulda NumPy kutubxonasining poydevori qo’yildi: array nima, uni qanday yaratish, tuzilishini qanday o’qish va elementlariga qanday murojaat qilish.

NumPy nima va nega kerak

NumPy (Numerical Python) — sonli hisob-kitoblar uchun asosiy Python kutubxonasi. Uning markaziy tushunchasi ndarray — bir xil turdagi elementlarni xotirada zich saqlaydigan ko’p o’lchovli massiv. Oddiy Python listidan farqli, NumPy amallari butun massiv ustida birdaniga, C tilida yozilgan tez kod bilan bajariladi — bunga vektorlashgan amal deyiladi.

import numpy as np

narxlar = np.array([120, 340, 95, 410])
print(narxlar * 1.12)

Natija:

[134.4 380.8 106.4 459.2]

Xuddi shu ishni list bilan qilish uchun sikl yozish kerak bo’lardi. Katta hajmdagi ma’lumotda (million element) NumPy o’nlab-yuzlab barobar tez ishlaydi.

Ko’p uchraydigan xato — import numpy deb yozib, keyin np.array ishlatish: NameError: name 'np' is not defined. Hamma joyda qabul qilingan uslub — import numpy as np.

Array yaratish

Arrayni tayyor listdan yoki maxsus funksiyalar bilan yaratish mumkin:

a = np.array([1, 2, 3])          # listdan
z = np.zeros((2, 3))             # 2x3, hammasi 0.0
o = np.ones(4)                   # [1. 1. 1. 1.]
r = np.arange(2, 10, 2)          # [2 4 6 8] — 10 kirmaydi!
l = np.linspace(0, 1, 5)         # [0.   0.25 0.5  0.75 1.  ]

arange(start, stop, step) xuddi range kabi ishlaydi — stop qiymati natijaga kirmaydi. linspace(start, stop, n) esa aksincha: ikkala chetni ham qo’shib, oraliqni teng n nuqtaga bo’ladi. Bu ikkisini adashtirish — eng ko’p uchraydigan boshlang’ich xato.

Yana bir tuzoq: np.array(1, 2, 3) deb yozish TypeError beradi — funksiya bitta list kutadi: np.array([1, 2, 3]).

Shakl va o’lcham: shape, ndim, size, dtype

Har bir array o’zining tuzilishi haqidagi ma’lumotni atributlarda saqlaydi:

m = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12]])
print(m.shape)   # (3, 4)  — 3 qator, 4 ustun
print(m.ndim)    # 2       — o'lchamlar soni
print(m.size)    # 12      — jami elementlar
print(m.dtype)   # int64   — element turi

shape — tuple: (qatorlar, ustunlar). size doim shape elementlarining ko’paytmasiga teng (3 × 4 = 12). dtype bitta butun arrayga tegishli: NumPy’da bitta arrayda aralash turlar bo’lmaydi — np.array([1, "a"]) hamma elementni matnga aylantirib yuboradi, bu ko’pincha kutilmagan xato manbai.

Indekslash va kesish

Indekslash listdagidek, lekin ko’p o’lchovli arrayda vergul bilan qisqa yoziladi:

m[0, 2]      # 1-qator, 3-ustun -> 3
m[1]         # butun 2-qator -> [5 6 7 8]
m[:, 0]      # butun 1-ustun -> [1 5 9]
m[0:2, 1:3]  # yuqori 2 qator, o'rtadagi 2 ustun
m[-1]        # oxirgi qator

Muhim farq: kesim (slice) nusxa emas, ko’rinish (view) qaytaradi. Ya’ni kesimni o’zgartirsangiz, asl array ham o’zgaradi:

a = np.array([1, 2, 3, 4, 5])
b = a[1:4]
b[0] = 99
print(a)

Natija:

[ 1 99  3  4  5]

Mustaqil nusxa kerak bo’lsa — a[1:4].copy(). Bu xato jimgina o’tib ketadi (hech qanday ogohlantirish yo’q), shuning uchun uni bilish ayniqsa muhim.

List va ndarray taqqoslash

Xususiyat Python list NumPy ndarray
Element turlari aralash bo’lishi mumkin bitta dtype
* 2 amali listni ikki marta takrorlaydi har elementni 2 ga ko’paytiradi
Tezlik (katta hajmda) sekin (sikl kerak) tez (vektorlashgan)
Kesim nusxa qaytaradi ko’rinish (view) qaytaradi
Ko’p o’lchov ichma-ich listlar tabiiy (shape)

Amaliyot

  1. 0 dan 100 gacha 5 qadam bilan array yarating (arange), so’ng xuddi shu oraliqni linspace bilan 21 nuqtaga bo’ling — ikkala natijani solishtiring.
  2. Haftalik harorat ma’lumotini (7 ta son) array qiling: shape, size va dtype ni chiqaring, so’ng faqat ish kunlari (dastlabki 5 element) kesimini oling.
  3. 4×5 o’lchamli nol matritsa yarating, uning 1-qatorini birlarga, oxirgi ustunini 9 ga tenglang.
  4. a = np.arange(10) dan b = a[2:7] kesim oling, b[0] = 100 deb o’zgartiring va a nima bo’lganini tushuntiring; keyin xuddi shuni .copy() bilan takrorlang.
  5. 3×3 matritsada burchakdagi 4 ta elementni bitta kesim ifodasi bilan oling (m[::2, ::2]).

Modulni yakunlash uchun keyingi darsdagi testni ishlang.

Asoslar — konspekt

Asoslar Maqola

NumPy asoslari bo’yicha konspekt: array yaratish, shape va dtype, indekslash va kesish — kod misollari va amaliyot bilan.

Eslatma yozish uchun saytga kiring.

Resurslar hozircha qo'shilmagan

O'qituvchi dars uchun qo'shimcha materiallarni qo'shganida shu yerda paydo bo'ladi.

Savol berish uchun saytga kiring.

Hozircha savollar yo'q

Bu dars yuzasidan birinchi savolni siz bering.