التنقية المنطقية والفهرسة المتقدمة
نقِّ المصفوفات باستخدام شروط منطقية، وحدّد عناصر عشوائية باستخدام مصفوفات فهارس صحيحة.
التنقية المنطقية والفهرسة المتقدمة درس مجاني في Pandas & NumPy Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Pandas & NumPy Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.
المصفوفات المنطقية كأقنعة
القناع المنطقي هو مصفوفة من القيم True وFalse. استخدمه كفهرس للاحتفاظ بالعناصر المحددة بـ True فقط — فهو أداتك الأساسية للترشيح.
import numpy as np
a = np.array([5, 3, 8, 1, 9, 2, 7])
mask = a > 4
print(mask) # [ True False True False True False True]
print(a[mask]) # [5 8 9 7]الشروط المنطقية المركّبة
أنشئ عوامل ترشيح مركّبة باستخدام & (و)، و | (أو)، و ~ (ليس). احرص دائمًا على إحاطة كل شرط بـ أقواس، وإلا فستسبب أولوية العوامل مشكلات.
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6, 4, 8])
# Elements between 4 and 8 inclusive
result = a[(a >= 4) & (a <= 8)]
print(result) # [7 6 4 8]
# Elements less than 3 or greater than 7
result2 = a[(a < 3) | (a > 7)]
print(result2) # [2 9 1 8]تعديل القيم باستخدام الفهرسة المنطقية
يمكنك الإسناد مباشرةً إلى تحديد منطقي، فتتغير العناصر المطابقة فقط في مكانها. وهذه أسرع طريقة للحد من القيم الشاذة أو ملء القيم المفقودة.
import numpy as np
a = np.array([5, -3, 8, -1, 2, -7])
a[a < 0] = 0 # zero out negatives in-place
print(a) # [5 0 8 0 2 0]
# Cap values above 6
a[a > 6] = 6
print(a) # [5 0 6 0 2 0]الأقنعة المنطقية على المصفوفات ثنائية الأبعاد
يعيد القناع المنطقي على مصفوفة ثنائية الأبعاد دائمًا نتيجة مسطّحة أحادية الأبعاد. ولتحديد صفوف كاملة، أنشئ قناعًا أحادي الأبعاد من أحد الأعمدة وفهرس على المحور 0.
import numpy as np
m = np.array([[1, 5], [3, 2], [8, 4], [6, 7]])
# Select rows where first column > 4
mask = m[:, 0] > 4
print(mask) # [False False True True]
print(m[mask]) # [[8 4] [6 7]]np.where مع الأقنعة
تحافظ np.where(condition, x, y) على شكل المصفوفة: فتختار x حيث يتحقق الشرط، و y في المواضع الأخرى. وهي مثالية لاستبدال القيم من دون تسطيح المصفوفة.
import numpy as np
a = np.array([3, -1, 5, -2, 4])
result = np.where(a >= 0, a, 0) # keep positives, replace negatives
print(result) # [3 0 5 0 4]
# Recode: above-average -> 'high', else -> 'low'
labels = np.where(a >= a.mean(), 'high', 'low')
print(labels) # ['high' 'low' 'high' 'low' 'high']أساسيات الفهرسة المتقدمة
تعني الفهرسة المتقدمة تمرير مصفوفة من الفهارس الصحيحة لاستخراج عناصر محددة — بأي ترتيب ومع إمكانية التكرار. وهي تعيد دائمًا نسخة.
import numpy as np
a = np.array([10, 20, 30, 40, 50])
idx = np.array([4, 1, 1, 3])
print(a[idx]) # [50 20 20 40]
# 2D index shape -> 2D output
idx2d = np.array([[0, 2], [4, 1]])
print(a[idx2d]) # [[10 30] [50 20]]الفهرسة المتقدمة على المصفوفات ثنائية الأبعاد
في المصفوفة ثنائية الأبعاد، تختار مصفوفتا الفهارس المقترنتان نقاطًا متفرقة: إذ تستخرج m[rows, cols] العنصر الموجود عند كل زوج (صف، عمود)، لا مصفوفة فرعية كاملة.
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Select elements at (0,2), (1,0), (2,1)
rows = [0, 1, 2]
cols = [2, 0, 1]
print(m[rows, cols]) # [3 4 8]np.ix_ لتحديد شبكة الصفوف والأعمدة
تحدد np.ix_ مصفوفة فرعية عند كل تركيبة من الصفوف والأعمدة التي تسردها — وهذا مفيد عندما تريد عدة صفوف وعدة أعمدة، لا أزواجًا منفردة فقط.
import numpy as np
m = np.arange(16).reshape(4, 4)
print(m)
# Select rows 0,2 and columns 1,3
ix = np.ix_([0, 2], [1, 3])
print(m[ix])
# [[ 1 3]
# [ 9 11]]np.nonzero() و np.argwhere()
تعيد np.nonzero فهارس العناصر غير الصفرية (أو True) في صورة صف لكل محور. أما np.argwhere فتعيد المعلومات نفسها مجمّعة في صفوف سهلة القراءة.
import numpy as np
a = np.array([0, 3, 0, 5, 0, 7])
print(np.nonzero(a)) # (array([1, 3, 5]),)
print(np.argwhere(a > 0)) # [[1] [3] [5]]دمج الفهرسة المنطقية والمتقدمة
ادمجهما معًا: استخدم قناعًا منطقيًا لترشيح الصفوف، ثم استخدم الفهرسة المتقدمة لإعادة ترتيب الأعمدة. وبهما معًا يمكنك ترشيح البيانات وإعادة ترتيبها في خطوة واضحة واحدة.
import numpy as np
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
scores = np.array([0.9, 0.3, 0.8])
# Keep high-scoring rows, reorder columns to [2, 0, 1]
high = data[scores > 0.5]
reordered = high[:, [2, 0, 1]]
print(reordered)الأداء: الفهرسة المنطقية مقابل المتقدمة
تعيد كل من الفهرسة المنطقية والمتقدمة نسخًا. ولأغراض الترشيح، يكون القناع المنطقي عادةً الأكثر وضوحًا وسرعةً كافية — لذا فهو خيار افتراضي ممتاز.
import numpy as np
a = np.random.rand(1_000_000)
# Boolean mask -- readable and fast
result = a[a > 0.5]
print('filtered size:', result.size) # ~500000
# Equivalent with np.where + fancy index
idx = np.where(a > 0.5)[0]
result2 = a[idx]
print('same result:', np.array_equal(result, result2))تحقّق سريعًا
اختبر مدى فهمك للأقنعة المنطقية والفهرسة المتقدمة التي تناولها هذا الدرس.
مراجعة الدرس
أحسنت! تعمل الأقنعة المنطقية على الترشيح والنسخ، وتحافظ np.where على شكل المصفوفة، بينما تستخرج الفهرسة المتقدمة أي عناصر تحددها. التالي: Pandas Series!
تعلم 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الدوال الشاملة (ufuncs)
- دوال التجميع
- قواعد البثّ
- التنقية المنطقية والفهرسة المتقدمة