تقطيع المصفوفات وفهرستها
حدّد العناصر والصفوف والأعمدة والمصفوفات الفرعية باستخدام تدوين الأعداد الصحيحة والتقطيع على المصفوفات متعددة الأبعاد.
تقطيع المصفوفات وفهرستها درس مجاني في 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 2np.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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء مصفوفات NumPy
- سمات المصفوفات وفحصها
- الحسابات عنصرًا بعنصر
- تقطيع المصفوفات وفهرستها