মূল content-এ যাও

Python for AI/NumPy/Lesson 33

NumPy কেন?

Python list ধীর কেন, আর NumPy array কীভাবে একই কাজ ১০-১০০ গুণ দ্রুত করে — vectorization, একই type-এর data, আর কেন সব ML library এর ওপর দাঁড়িয়ে।

সময়
20 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

NumPy (Numerical Python) হলো সংখ্যা নিয়ে দ্রুত কাজ করার library। এর মূল জিনিস ndarray — list-এর মতো, কিন্তু:

  • সব item একই type (সব int, বা সব float)
  • হিসাব হয় পুরো array-এর ওপর একবারে — loop লিখতে হয় না
main.py

তিন লাইনে যা করলাম, list দিয়ে করতে loop লাগত।

কেন দরকার?

সব ML library NumPy-র ওপর দাঁড়িয়ে:

  • Pandas DataFrame-এর ভেতরে NumPy array
  • scikit-learn-এর fit(X, y)-এ X আর y NumPy array
  • PyTorch tensor প্রায় হুবহু NumPy-র মতো আচরণ করে (.numpy() দিয়ে রূপান্তরও হয়)
  • একটা ছবি = সংখ্যার একটা 3D array (height × width × রং)

NumPy না জানলে এগুলোর কোনোটাই ঠিকমতো বোঝা যাবে না।

Visual intuition: list বনাম array

Python list:   [ ptr ][ ptr ][ ptr ][ ptr ]       প্রতিটা item আলাদা object,
                  |      |      |      |          memory-র এখানে-ওখানে ছড়ানো
                 120    250     80    1500

NumPy array:   [ 120 | 250 | 80 | 1500 ]          সব সংখ্যা পাশাপাশি, একই type

NumPy-তে সংখ্যাগুলো পাশাপাশি থাকে, তাই CPU এক টানে পড়ে ফেলে। আর prices * 1.15-এর ভেতরের loop চলে compiled C code-এ।

গতির পার্থক্য — নিজে মেপে দেখো

main.py

তোমার computer আর browser অনুযায়ী সংখ্যা আলাদা হবে, কিন্তু পার্থক্যটা বিশাল। ML-এ লাখ লাখ সংখ্যা নিয়ে কাজ — এই পার্থক্যই ঠিক করে training ১ মিনিটে হবে নাকি ১ ঘণ্টায়।

Vectorization

Loop-এর বদলে পুরো array-এর ওপর operation লেখাকে বলে vectorization। এটা NumPy-র মূল চিন্তাধারা:

main.py

শেষ লাইনটা দেখো — celsius[hot] শুধু সেই মানগুলো দিল যেখানে শর্ত True। এই "boolean indexing" পরে বিস্তারিত দেখবো।

সাবধান: list আর array-এর *

main.py

List-এ * আর + মানে জোড়া লাগানো; array-তে গাণিতিক হিসাব। নতুনদের সবচেয়ে common গোলমাল।

একই type: dtype

main.py

একটা float থাকলে সব float; একটা string থাকলে সব string! CSV থেকে data আনার পর dtype চেক করা ভালো অভ্যাস।

Exercise

Exercise

Loop ছাড়া VAT

+20 XP

prices list-কে NumPy array বানাও, তারপর প্রতিটা দামে ১৫% VAT যোগ করে with_vat array বানাও।

কোনো loop বা list comprehension ছাড়া — পুরো array-এর ওপর একবারে হিসাব করো।

solution.py

Quiz

  1. Q1np.array([1, 2, 3]) * 2 আর [1, 2, 3] * 2-এর ফলাফল কী?
  2. Q2NumPy array list-এর চেয়ে দ্রুত কেন?
  3. Q3np.array([1, 2.5, 3])-এর dtype কী হবে?
0/3 answered

Challenge

Challenge

Mean Squared Error

+50 XP

Regression model কতটা ভুল করছে মাপার সবচেয়ে common উপায় Mean Squared Error:

MSE = (প্রতিটা ভুলের বর্গ)-এর গড় = mean((y_true − y_pred)²)

mse(y_true, y_pred) function লেখো — NumPy দিয়ে, loop ছাড়া। Input list বা array দুটোই হতে পারে। একটা সাধারণ float return করবে।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

তুমি challenge-এ যে MSE লিখলে, সেটা linear regression-এর loss function — training-এর সময় model এই সংখ্যাটা ছোট করার চেষ্টা করে। scikit-learn-এ mean_squared_error, PyTorch-এ nn.MSELoss — ভেতরে ঠিক এই এক লাইন।

main.py

MSE যত কম, model তত ভালো।

Interview প্রশ্ন

  • Beginner: NumPy array আর Python list-এর পার্থক্য কী?
  • Intermediate: Vectorization কী, আর কেন এটা দ্রুত?
  • Advanced: MSE-তে ভুলের বর্গ নেওয়া হয় কেন, absolute মান না নিয়ে? Outlier-এর ওপর এর কী প্রভাব? (বর্গ বড় ভুলকে অনেক বেশি শাস্তি দেয় — outlier-এ sensitive।)

এরপর কী?

এখন পর্যন্ত শুধু list থেকে array বানিয়েছি। কিন্তু শূন্যে ভরা array, নির্দিষ্ট range, বা matrix বানাতে আরও অনেক উপায় আছে — আর shape ধারণাটা বুঝতে হবে। পরের lesson: Arrays তৈরি।