{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Topshiriqlar 1 (NumPy)\n", "\n", "Quyidagi mashqlar `source/libs1/numpy_lib.ipynb` mavzulari asosida tuzilgan.\n", "\n", "## 1. O‘rnatish va import\n", "\n", "1. `import numpy as np` ni bajaring. `np.__version__` ni chop eting.\n", "2. Python `list` va NumPy `ndarray` farqlarini 3 ta punktda yozing (tartib/tezlik/vektorlash kabi).\n", "\n", "## 2. Obyekt yaratish\n", "\n", "3. Quyidagi ro‘yxatdan `ndarray` yarating va uning `shape`, `ndim`, `dtype` qiymatlarini chiqaring:\n", " ```python\n", " x = [1, 2, 3, 4, 5]\n", " ```\n", "4. `A` matritsani yarating:\n", " ```\n", " A = [[1,2,3,4],\n", " [5,6,7,8],\n", " [9,10,11,12]]\n", " ```\n", " Uni `np.array` ga o‘tkazing va `shape` ni tekshiring.\n", "5. `np.zeros` va `np.ones` yordamida quyidagilarni yarating:\n", " a) uzunligi 10 bo‘lgan nol vektor;\n", " b) o‘lchami `(3, 4)` bo‘lgan nol matritsa;\n", " c) o‘lchami `(2, 5)` bo‘lgan birliklar matritsasi.\n", "6. `np.arange` yordamida:\n", " a) 1 dan 12 gacha bo‘lgan sonlarni (12 ham kirsin) yarating;\n", " b) faqat juft sonlarni yarating: 0,2,4,...,20.\n", "\n", "## 3. Indekslash va kesish (slicing)\n", "\n", "7. Yuqoridagi `A` matritsa uchun:\n", " a) `A[1, 2]` elementni oling;\n", " b) 2-qatorni to‘liq oling;\n", " c) 3-ustunni to‘liq oling;\n", " d) chap yuqori 2x2 blokni oling.\n", "8. `A` ning biror kichik blokini kesib olib `B` deb oling (masalan, `A[:, 1:3]`).\n", " a) `B` ni o‘zgartirsangiz `A` ham o‘zgaradimi? Tajriba qiling va xulosa yozing.\n", "\n", "## 4. Qiymat berish (assignment)\n", "\n", "9. `A` matritsada:\n", " a) bitta element qiymatini o‘zgartiring (masalan, `A[0,0]=99`).\n", " b) butun bir qatorni 0 ga tenglashtiring.\n", " c) butun bir ustunni 1 ga tenglashtiring.\n", "\n", "## 5. Element bo‘yicha amallar (vektorlash)\n", "\n", "10. `x = np.arange(1, 6)` uchun quyidagilarni hisoblang:\n", " a) `x + 10`\n", " b) `x * 2`\n", " c) `x ** 2`\n", "11. `x` va `y = np.arange(10, 15)` uchun:\n", " a) `x + y`\n", " b) `x - y`\n", " c) `x * y`\n", " d) nega bu amallar `for` siz ishlaydi? 2–3 gap yozing.\n", "12. (Broadcasting) `A` matritsaga bitta son qo‘shing va bitta vektor qo‘shib ko‘ring.\n", " - Qaysi holat ishlaydi, qaysi holat xato beradi? `shape` larni yozib izohlang.\n", "\n", "## 6. Algebraik amallar\n", "\n", "13. `A.T` (transponirlash) ni hisoblang.\n", "14. `A` uchun quyidagilarni toping:\n", " a) `np.sum(A)` (hamma elementlar yig‘indisi)\n", " b) `np.sum(A, axis=0)` (ustun bo‘yicha)\n", " c) `np.sum(A, axis=1)` (qator bo‘yicha)\n", "15. `np.max(A)` va `np.min(A)` ni toping.\n", "16. `np.argmax(A)` va `np.argmin(A)` nimani bildiradi? Natijani `A.ravel()` bilan solishtirib izohlang.\n", "\n", "## 7. Qayta shakllash (reshape)\n", "\n", "17. `v = np.arange(1, 13)` yarating.\n", " a) `v.reshape(4, 3)` ni hisoblang.\n", " b) `v.reshape(3, 4)` ni hisoblang.\n", " c) Nega `v.reshape(5, 3)` xato beradi? Elementlar soni nuqtai nazaridan tushuntiring.\n", "18. `B = v.reshape(4, 3)` bo‘lsin.\n", " a) `B.shape` va `B.ndim` ni chiqaring.\n", " b) `B` dan 1D ko‘rinishga qaytishning 2 xil usulini toping (masalan, `reshape(-1)` kabi).\n", "\n", "## 8. Tasodifiy sonlar va yig‘ishlar\n", "\n", "19. `rng = np.random.default_rng(42)` yarating.\n", " a) `a = rng.integers(20, size=(12,))` yarating.\n", " b) `np.sum(a)`, `np.max(a)`, `np.min(a)`, `np.mean(a)` ni hisoblang.\n", "20. `A = rng.integers(25, size=(4, 3))` yarating.\n", " a) qator bo‘yicha yig‘indilarni toping (`axis=1`);\n", " b) ustun bo‘yicha yig‘indilarni toping (`axis=0`).\n", "\n", "## 9. Kichik amaliy masalalar\n", "\n", "21. 1D vektor berilgan: `x = rng.integers(100, size=(30,))`.\n", " a) o‘rtacha qiymatdan katta elementlar sonini toping.\n", " b) eng katta 5 ta elementni toping (ixtiyoriy: indekslari bilan).\n", "22. (Ixtiyoriy) `A` matritsaning har bir qatorini o‘rtacha qiymati bilan markazlashtiring:\n", " - har bir qatordan shu qatorning o‘rtachasini ayiring.\n" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }