Pandas & NumPy Academy · درس

تقطيع المصفوفات وفهرستها

حدّد العناصر والصفوف والأعمدة والمصفوفات الفرعية باستخدام تدوين الأعداد الصحيحة والتقطيع على المصفوفات متعددة الأبعاد.

الدرس 4 من 413 خطوة

تقطيع المصفوفات وفهرستها درس مجاني في Pandas & NumPy Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Pandas & NumPy Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

الفهرسة بالأعداد الصحيحة في المصفوفات أحادية الأبعاد

تُفهرس المصفوفة أحادية الأبعاد مثل القائمة تمامًا: يشير a[0] إلى العنصر الأول، ويشير a[-1] إلى الأخير. تُرجع الفهرسة قيمة مفردة، وتبدأ الأعداد السالبة من النهاية.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
print(a[0])    # 10
print(a[-1])   # 50
print(a[2])    # 30

تقطيع المصفوفات أحادية الأبعاد

تستخدم عمليات التقطيع الصيغة start:stop:step مثل القوائم، لكن شريحة NumPy تُرجع عرضًا، لا نسخة. لذلك يؤدي تغيير الشريحة إلى تغيير الأصل، فاستخدم .copy() عند الحاجة.

import numpy as np

a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
print(a[2:7])      # [2 3 4 5 6]
print(a[::2])      # [0 2 4 6 8]
print(a[::-1])     # [9 8 7 6 5 4 3 2 1 0]

فهرسة المصفوفات الثنائية الأبعاد

في المصفوفات الثنائية الأبعاد، استخدم صيغة الفاصلة: a[row, col]. ويعني النقطتان وحدهما كل شيء على ذلك المحور، لذا يستخرج a[0, :] صفًا كاملًا، ويستخرج a[:, 1] عمودًا كاملًا.

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

print(m[1, 2])     # 6  (row 1, col 2)
print(m[0, :])     # [1 2 3]  first row
print(m[:, 1])     # [2 5 8]  second column

تقطيع المصفوفات الثنائية الأبعاد

مرّر شريحتين لاستخراج كتلة مستطيلة: يأخذ a[0:2, 1:3] تلك الصفوف والأعمدة. والنتيجة عرض، لذا تنعكس التعديلات على المصفوفة الأصلية.

import numpy as np

m = np.arange(16).reshape(4, 4)
print(m)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

print(m[1:3, 1:3])
# [[ 5  6]
#  [ 9 10]]

الفهرسة المنطقية

مرّر مصفوفة منطقية للاحتفاظ بالعناصر المحددة بالقيمة True فقط. تُرجع الفهرسة المنطقية نسخة دائمًا، وهي الطريقة القياسية لتصفية البيانات.

import numpy as np

a = np.array([3, 7, 2, 9, 1, 6])
mask = a > 4
print(mask)     # [False  True False  True False  True]
print(a[mask])  # [7 9 6]

# Equivalent one-liner
print(a[a > 4])  # [7 9 6]

الفهرسة المتقدمة باستخدام مصفوفات الأعداد الصحيحة

تتيح لك الفهرسة المتقدمة اختيار عناصر من أي مواضع باستخدام قائمة من الأعداد الصحيحة — وبأي ترتيب، حتى مع تكرارها. وتُرجع نسخة دائمًا.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
idx = [4, 1, 3]
print(a[idx])    # [50 20 40]

# Selecting specific rows from a 2D array
m = np.arange(20).reshape(4, 5)
print(m[[0, 2], :])  # rows 0 and 2

np.where للاختيار الشرطي

تختار np.where(condition, x, y) من x عندما يكون الشرط True، ومن y عندما يكون False — وهي طريقة سريعة لاختيار القيم لكل عنصر من دون حلقات.

import numpy as np

a = np.array([5, -3, 8, -1, 2])
result = np.where(a > 0, a, 0)  # keep positives, zero negatives
print(result)  # [5 0 8 0 2]

# np.where with one argument returns indices of True elements
idx = np.where(a > 0)
print(idx)     # (array([0, 2, 4]),)

الشرائح عروض — انتبه!

تنبيه: بما أن الشرائح عروض، فإن تعديل أحدها يعدّل المصفوفة الأصلية أيضًا. هل تحتاج إلى جزء مستقل؟ استدعِ .copy() على الشريحة أولًا. ⚠️

import numpy as np

original = np.arange(6)
view = original[2:5]   # view, not copy
view[:] = 99
print(original)  # [ 0  1 99 99 99  5]  -- original changed!

safe = original[2:5].copy()  # true copy
safe[:] = 0
print(original)  # [ 0  1 99 99 99  5]  -- unchanged

فهرسة المصفوفات ثلاثية الأبعاد

يمكن أن تحتوي المصفوفات على أي عدد من الأبعاد. وفي المصفوفة ثلاثية الأبعاد، تفهرس باستخدام ثلاثة مواضع: a[depth, row, col] — وهذا شائع عند التعامل مع دفعات من الصور.

import numpy as np

t = np.arange(24).reshape(2, 3, 4)
print(t.shape)       # (2, 3, 4)
print(t[0, :, :])    # first 'plane' -- shape (3, 4)
print(t[1, 2, 3])    # scalar at depth 1, row 2, col 3

إسناد القيم من خلال الفهرسة

يمكن استخدام أي صيغة فهرسة على الجانب الأيسر من = لتغيير القيم في مكانها — سواء كانت شرائح أو أقنعة أو فهارس متقدمة. وعند إسناد قيمة مفردة، توزّعها NumPy على كل المواضع.

import numpy as np

a = np.zeros(8)
a[2:5] = 1.0          # slice assignment
print(a)  # [0. 0. 1. 1. 1. 0. 0. 0.]

a[a == 0] = -1.0      # boolean assignment
print(a)  # [-1. -1.  1.  1.  1. -1. -1. -1.]

Ellipsis و np.newaxis

تضيف np.newaxis (أو None) محورًا حجمه 1، فتحوّل مصفوفة بشكل (5,) إلى متجه عمودي بشكل (5, 1) — وهو إعداد شائع قبل استخدام broadcasting.

import numpy as np

t = np.ones((2, 3, 4))
print(t[..., 0].shape)   # (2, 3) -- last axis fixed at 0

a = np.array([1, 2, 3])
print(a.shape)                 # (3,)
print(a[:, np.newaxis].shape)  # (3, 1) column vector

تحقق سريع

اختبر فهمك لتقطيع مصفوفات NumPy وفهرستها من هذا الدرس.

مراجعة الدرس

أحسنت! تشارك الشرائح الذاكرة بوصفها عروضًا، بينما تعمل الفهرسة المنطقية على التصفية وإنشاء نسخة، وتستخرج الفهرسة المتقدمة أي عناصر تحددها. التالي: الدوال العامة.

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «تقطيع المصفوفات وفهرستها» مجاني؟

نعم — نص درس «تقطيع المصفوفات وفهرستها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Pandas & NumPy Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

ماذا ستتعلم في «تقطيع المصفوفات وفهرستها»؟

حدّد العناصر والصفوف والأعمدة والمصفوفات الفرعية باستخدام تدوين الأعداد الصحيحة والتقطيع على المصفوفات متعددة الأبعاد. تتمرن على Pandas & NumPy Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Pandas & NumPy Academy؟

لا تُشترط خبرة سابقة. Pandas & NumPy Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تقطيع المصفوفات وفهرستها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Pandas & NumPy Academy هذا؟

نعم. كل درس في Pandas & NumPy Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء مصفوفات NumPy
  2. سمات المصفوفات وفحصها
  3. الحسابات عنصرًا بعنصر
  4. تقطيع المصفوفات وفهرستها
← العودة إلى Pandas & NumPy Academy