Topshiriqlar 1 (NumPy)

Quyidagi mashqlar source/libs1/numpy_lib.ipynb mavzulari asosida tuzilgan.

1. O‘rnatish va import

  1. import numpy as np ni bajaring. np.__version__ ni chop eting.

  2. Python list va NumPy ndarray farqlarini 3 ta punktda yozing (tartib/tezlik/vektorlash kabi).

2. Obyekt yaratish

  1. Quyidagi ro‘yxatdan ndarray yarating va uning shape, ndim, dtype qiymatlarini chiqaring:

    x = [1, 2, 3, 4, 5]
    
  2. A matritsani yarating:

    A = [[1,2,3,4],
         [5,6,7,8],
         [9,10,11,12]]
    

    Uni np.array ga o‘tkazing va shape ni tekshiring.

  3. np.zeros va np.ones yordamida quyidagilarni yarating:

    1. uzunligi 10 bo‘lgan nol vektor;

    2. o‘lchami (3, 4) bo‘lgan nol matritsa;

    3. o‘lchami (2, 5) bo‘lgan birliklar matritsasi.

  4. np.arange yordamida:

    1. 1 dan 12 gacha bo‘lgan sonlarni (12 ham kirsin) yarating;

    2. faqat juft sonlarni yarating: 0,2,4,…,20.

3. Indekslash va kesish (slicing)

  1. Yuqoridagi A matritsa uchun:

    1. A[1, 2] elementni oling;

    2. 2-qatorni to‘liq oling;

    3. 3-ustunni to‘liq oling;

    4. chap yuqori 2x2 blokni oling.

  2. A ning biror kichik blokini kesib olib B deb oling (masalan, A[:, 1:3]).

    1. B ni o‘zgartirsangiz A ham o‘zgaradimi? Tajriba qiling va xulosa yozing.

4. Qiymat berish (assignment)

  1. A matritsada:

    1. bitta element qiymatini o‘zgartiring (masalan, A[0,0]=99).

    2. butun bir qatorni 0 ga tenglashtiring.

    3. butun bir ustunni 1 ga tenglashtiring.

5. Element bo‘yicha amallar (vektorlash)

  1. x = np.arange(1, 6) uchun quyidagilarni hisoblang:

  1. x + 10

  2. x * 2

  3. x ** 2

  1. x va y = np.arange(10, 15) uchun:

  1. x + y

  2. x - y

  3. x * y

  4. nega bu amallar for siz ishlaydi? 2–3 gap yozing.

  1. (Broadcasting) A matritsaga bitta son qo‘shing va bitta vektor qo‘shib ko‘ring.

  • Qaysi holat ishlaydi, qaysi holat xato beradi? shape larni yozib izohlang.

6. Algebraik amallar

  1. A.T (transponirlash) ni hisoblang.

  2. A uchun quyidagilarni toping:

  1. np.sum(A) (hamma elementlar yig‘indisi)

  2. np.sum(A, axis=0) (ustun bo‘yicha)

  3. np.sum(A, axis=1) (qator bo‘yicha)

  1. np.max(A) va np.min(A) ni toping.

  2. np.argmax(A) va np.argmin(A) nimani bildiradi? Natijani A.ravel() bilan solishtirib izohlang.

7. Qayta shakllash (reshape)

  1. v = np.arange(1, 13) yarating.

  1. v.reshape(4, 3) ni hisoblang.

  2. v.reshape(3, 4) ni hisoblang.

  3. Nega v.reshape(5, 3) xato beradi? Elementlar soni nuqtai nazaridan tushuntiring.

  1. B = v.reshape(4, 3) bo‘lsin.

  1. B.shape va B.ndim ni chiqaring.

  2. B dan 1D ko‘rinishga qaytishning 2 xil usulini toping (masalan, reshape(-1) kabi).

8. Tasodifiy sonlar va yig‘ishlar

  1. rng = np.random.default_rng(42) yarating.

  1. a = rng.integers(20, size=(12,)) yarating.

  2. np.sum(a), np.max(a), np.min(a), np.mean(a) ni hisoblang.

  1. A = rng.integers(25, size=(4, 3)) yarating.

  1. qator bo‘yicha yig‘indilarni toping (axis=1);

  2. ustun bo‘yicha yig‘indilarni toping (axis=0).

9. Kichik amaliy masalalar

  1. 1D vektor berilgan: x = rng.integers(100, size=(30,)).

  1. o‘rtacha qiymatdan katta elementlar sonini toping.

  2. eng katta 5 ta elementni toping (ixtiyoriy: indekslari bilan).

  1. (Ixtiyoriy) A matritsaning har bir qatorini o‘rtacha qiymati bilan markazlashtiring:

  • har bir qatordan shu qatorning o‘rtachasini ayiring.