تخطَّ إلى المحتوى

🤖 شرح الذكاء الاصطناعي وتعلّم الآلة

NumPy للذكاء الاصطناعي

الدرس 8 من 50· ⏱ 4 دقائق قراءة· 🗓 آخر تحديث: ١٨ سبتمبر ٢٠٢٦

NumPy هي المكتبة التي كل مكتبات الذكاء الاصطناعي تقريبًا مبنية عليها: Pandas، scikit-learn، PyTorch، TensorFlow. هذه الصفحة تشرح أساسيات NumPy التي تحتاجها فعليًا — ليس كل التفاصيل الأكاديمية، فقط ما تستعمله في مشاريعك.

ما هي NumPy؟

NumPy تقدّم نوع بيانات واحد أساسي: ndarray — مصفوفة متعددة الأبعاد من القيم العددية (عادةً أرقام، لكن ممكن نصوص أو قيم منطقية). ميزتها الأساسية عن قوائم Python: السرعة. العمليات على ملايين القيم تتم في أجزاء من الثانية بفضل تنفيذ C الداخلي.

التثبيت والاستيراد

بعد تجهيز بيئة Python للذكاء الاصطناعي:

pip install numpy

في Jupyter:

import numpy as np
print(np.__version__)

إنشاء مصفوفات

# من قائمة Python
a = np.array([1, 2, 3, 4, 5])

# من صفر أو واحد
zeros = np.zeros((3, 4))     # 3 صفوف × 4 أعمدة، كلها 0
ones = np.ones((2, 3))       # 2 × 3، كلها 1

# نطاقات
seq = np.arange(0, 10, 2)    # [0, 2, 4, 6, 8]
lin = np.linspace(0, 1, 5)   # 5 نقاط متساوية بين 0 و 1

# أرقام عشوائية
rng = np.random.default_rng(42)
random_floats = rng.random((2, 3))   # قيم بين 0 و 1

الشكل (Shape) والأبعاد

كل ndarray له شكل يصف أبعاده:

a = np.array([[1, 2, 3],
              [4, 5, 6]])
print(a.shape)   # (2, 3)  — صفّان، 3 أعمدة
print(a.ndim)    # 2       — بُعدان
print(a.dtype)   # int64   — نوع البيانات

الفهرسة (Indexing) والتقطيع (Slicing)

a = np.array([10, 20, 30, 40, 50])

# عنصر واحد
print(a[0])      # 10
print(a[-1])     # 50

# شريحة
print(a[1:4])    # [20, 30, 40]

# مصفوفة ثنائية الأبعاد
m = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
print(m[0, 1])   # الصف 0، العمود 1 → 2
print(m[:, 0])   # كل الصفوف، العمود 0 → [1, 4, 7]
print(m[1, :])   # الصف 1 كله → [4, 5, 6]

العمليات الرياضية

a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])

# عمليات عنصر بعنصر
print(a + b)     # [11 22 33 44]
print(a * b)     # [10 40 90 160]
print(a ** 2)    # [1 4 9 16]

# دوال إحصائية
print(a.mean())        # 2.5
print(a.std())         # الانحراف المعياري
print(a.max(), a.min()) # أكبر وأصغر قيمة

Broadcasting

قوة NumPy: عمليات بين مصفوفات بأشكال مختلفة بدون نسخ:

a = np.array([1, 2, 3])
b = 10
print(a + b)   # [11, 12, 13] — العدد 10 "بُثّ" ليطابق شكل a

m = np.array([[1, 2, 3],
              [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)  # الصف نفسه يُضاف لكل صف من المصفوفة

هذه الخاصية هي التي تجعل عمليات الذكاء الاصطناعي (مثل ضرب كل صف من البيانات بنفس الأوزان) سهلة وسريعة.

لماذا NumPy مهمة للذكاء الاصطناعي؟

  • البيانات تتحول إلى NumPy arrays: عندما تقرأ صورة (224×224×3 بيكسل)، صوت (آلاف العينات)، أو جدول ميزات (آلاف الصفوف × عشرات الأعمدة) — كلها مصفوفات NumPy في النهاية.
  • scikit-learn يتوقّع NumPy أو Pandas كدخل. التحوّل بين الاثنين سلس.
  • PyTorch وTensorFlow يستخدمان مفاهيم مشابهة جدًا لـ NumPy (Tensor = ndarray متعدد الأبعاد).
  • فهم NumPy يجعلك تفهم ما يحدث داخل النماذج، بدل أن تعاملها كصندوق أسود.

مثال عملي: تحضير ميزات لاختبار قادم

لنفترض أن لديك بيانات أسعار 5 منازل:

# كل صف = منزل، الأعمدة = [المساحة (م²), عدد الغرف, عمر المنزل (سنوات)]
houses = np.array([
    [120, 3, 10],
    [200, 4, 5],
    [85,  2, 20],
    [300, 5, 2],
    [150, 3, 15],
])

# طباعة متوسط المساحة
print("متوسط المساحة:", houses[:, 0].mean())   # 171.0

# أكبر عدد غرف
print("أكبر عدد غرف:", houses[:, 1].max())      # 5

# تطبيع (normalization) — تحويل كل عمود لمتوسط 0 وانحراف معياري 1
features = houses[:, :2]   # المساحة والغرف
mean = features.mean(axis=0)
std = features.std(axis=0)
normalized = (features - mean) / std
print(normalized)

هذا التطبيع خطوة معتادة قبل تدريب النماذج، وستلاحظ أن scikit-learn تقدّم نفس الشيء في StandardScaler.

أخطاء شائعة

  • تعديل ndarray يفاجئك: NumPy أحيانًا تعيد "عرض" (View) بدل نسخة، فتعديل الشريحة يعدّل الأصل. استخدم .copy() إذا أردت نسخة مستقلة.
  • خلط أنواع البيانات: np.array([1, 2, 3.0]) يصبح كله float64. حدد النوع يدويًا إن أردت (dtype=np.int32).
  • مقارنة ndarray بقائمة Python: np.array([1,2,3]) == [1,2,3] يُرجع مصفوفة Bool، لا قيمة منطقية واحدة.

الخطوات التالية

📚 مرجع إضافي: توثيق NumPy الرسمي.

شرح NumPy للذكاء الاصطناعي — الذكاء الاصطناعي وتعلّم الآلة بالعربي
NumPy للذكاء الاصطناعيالذكاء الاصطناعي وتعلّم الآلة بالعربي · The Code Fix

📚 لمزيد من التعمّق في الذكاء الاصطناعي وتعلّم الآلة، راجِع توثيق scikit-learn الرسمي.

هل كان هذا الدرس مفيدًا؟