پیش‌نیاز و هدف یادگیری

این بخش، گام 23 از مسیر «پایتون از صفر» است. هدف این درس ساخت آرایه، محاسبهٔ برداری و تبدیل خروجی به نوع JSON است. پیش‌نیاز: تست تابع در پایتون؛ assert و مثال نقض. کتابخانهٔ لازم: numpy؛ در میزکار سایت آماده است. اگر مفهوم قبلی برایتان ناآشناست، ابتدا مقالهٔ پیش‌نیاز را بخوانید و مثالش را اجرا کنید؛ حفظ‌کردن کد جای فهم ورودی و خروجی را نمی‌گیرد.

مفهوم اصلی به زبان ساده

NumPy کتابخانه‌ای خارجی برای محاسبات عددی است و همراه خود پایتون نصب نمی‌شود. در رایانهٔ شخصی ابتدا python -m venv .venv را اجرا کنید؛ در لینوکس و مک با source .venv/bin/activate و در PowerShell با .\.venv\Scripts\Activate.ps1 محیط را فعال کنید. سپس python -m pip install numpy را در همان محیط اجرا کنید. در میزکار سایت کتابخانه از قبل آماده است و نصب آنلاین از ترمینال مجاز نیست.

مسئلهٔ این درس

در پروژهٔ «گزارش عددی با آرایهٔ NumPy» باید یک تابع مستقل بنویسید. میزکار ورودی نمونه را در request.json قرار می‌دهد؛ تابع solve دیکشنری داده را می‌گیرد و نتیجهٔ خود را برمی‌گرداند. در این قرارداد input لازم نیست و خواندن تعاملی از ترمینال ممکن است اجرای ارزیابی را متوقف کند. از مثال زیر شروع کنید و پیش از اجرای آن، شکل نتیجه را حدس بزنید.

نمونه‌کد قابل اجرا

import numpy as np

def solve(data):
    values = np.asarray(data['values'], dtype=float)
    if values.size == 0:
        return {'error': 'empty_data'}
    average = float(values.mean())
    return {'mean': average, 'max': float(values.max()), 'centered': (values - average).tolist()}

print(solve({'values': [2, 4, 6]}))

نتیجهٔ مورد انتظار

{
  "mean": 4,
  "max": 6,
  "centered": [
    -2,
    0,
    2
  ]
}

توضیح مرحله‌به‌مرحله

با np.asarray و dtype=float، فهرست عددها به آرایه تبدیل می‌شود. mean و max خلاصه‌های عددی را می‌دهند و تفریق میانگین از کل آرایه یک محاسبهٔ برداری است. خروجی centered نشان می‌دهد هر عدد چقدر از میانگین فاصله دارد؛ جمع این فاصله‌ها تقریباً صفر است. این کار فقط مرکزکردن است و با استانداردسازی بر اساس انحراف معیار فرق دارد.

قرارداد ورودی و خروجی

مثال فقط یک ورودی است، نه همهٔ مسئله. مقدارها را از data بخوانید و جواب نمونه را ثابت در برنامه ننویسید. نام کلیدها، نوع عدد و رشته و ترتیب فهرست‌ها بخشی از قراردادند. در پروژه، بخش پایانی main.py نتیجهٔ تابع را در result.json ذخیره می‌کند؛ آن بخش را نگه دارید. موفقیت اجرای برنامه با درست‌بودن پاسخ و قبولی ارزیابی یکسان نیست.

خطای رایج و راه تشخیص

عدد و آرایهٔ NumPy همیشه مستقیماً با json.dumps سازگار نیستند. float مقدار اسکالر و tolist آرایه را به نوع‌های عادی پایتون تبدیل می‌کند. برای ورودی خالی، قبل از mean خطای empty_data می‌دهیم تا هشدار و مقدار NaN تولید نشود. در پروژه‌های شخصی نسخهٔ وابستگی‌ها را در requirements.txt ثبت کنید.

تمرین مستقل و خودآزمایی

آرایهٔ [۲، ۴، ۶] را مرکز کنید و خروجی را دستی بسنجید. اگر ModuleNotFoundError دیدید، python -m pip --version و مسیر مفسر فعال را بررسی کنید؛ نصب تصادفی در محیط دیگر مشکل را حل نمی‌کند.

برای هر آزمایش، ورودی، خروجی مورد انتظار و خروجی واقعی را جدا بنویسید. اگر تفاوتی دیدید، یک نمونهٔ کوچک‌تر بسازید و تغییر را دوباره امتحان کنید. به جای اجرای چند تغییر هم‌زمان، هر بار یک فرض را بررسی کنید. پس از فهم نمونه، پروژهٔ مرتبط را در میزکار حل کنید؛ ارزیابی با چند ورودی متفاوت انجام می‌شود و پاسخ ثابت نمونه پذیرفته نخواهد شد.

گام بعدی

موضوع‌های این درس: venv · pip · NumPy · ndarray. اگر می‌توانید دلیل هر خط را توضیح دهید و ورودی تازه‌ای را بدون دست‌کاری منطق اصلی حل کنید، به مقالهٔ بعدی بروید. هدف مسیر مقدماتی، تسلط بر همین رفتارهای کوچک و قابل آزمایش است؛ برای شروع پروژه‌های یادگیری ماشین عجله نکنید.

منابع و مطالعهٔ بیشتر

برای بررسی جزئیات و ادامهٔ مطالعه؛ متن این راهنما مستقلاً برای نوونتیکس نوشته شده است.