الفهرسة والتقطيع والفهرسة المتقدمة
ادخل إلى عناصر المصفوفات وعدّلها باستخدام تقنيات الفهرسة المتقدمة
الفهرسة والتقطيع والفهرسة المتقدمة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
الفهرسة الأساسية
يمكنك الوصول إلى العناصر باستخدام فهارس صحيحة تبدأ من الصفر. وتحسب الفهارس السالبة من النهاية. وتستخدم المصفوفات متعددة الأبعاد فهارس مفصولة بفواصل.
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[0, 2]) # 3
print(arr[-1, -1]) # 9
print(arr[1]) # [4 5 6]التقطيع
تعيد صيغة التقطيع start:stop:step عرضًا. ويُطبّق ذلك بشكل مستقل على كل بُعد.
import numpy as np
m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
# [9 10]]
print(m[::2, ::2]) # every other row and columnالفهرسة المنطقية (التنقية)
مرّر مصفوفة منطقية بالشكل نفسه لتحديد العناصر التي تكون قيمتها True.
import numpy as np
arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask) # [ True False True False True]
print(arr[mask]) # [1 3 5]
arr[~mask] = 0 # set negatives to 0
print(arr) # [1 0 3 0 5]الفهرسة المتقدمة باستخدام مصفوفات صحيحة
مرّر مصفوفة من الفهارس الصحيحة لتحديد عدة عناصر معينة.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx]) # [10 30 50]
# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]]) # [m[0,0], m[2,2]] = [0, 8]np.where للتحديد المفهرس
تعيد np.where(condition) (بوسيطة واحدة) الفهارس التي تكون فيها قيمة الشرط True.
import numpy as np
arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx) # [0 2 4]
print(arr[idx]) # [5 8 9]np.take وnp.put
تحدّد np.take(arr, indices) العناصر (وتدعم الفهرسة المسطّحة). أما np.put(arr, indices, values) فتدرج القيم.
import numpy as np
arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3])) # [20 40]
np.put(arr, [0, 2], [99, 88])
print(arr) # [99 20 88 40]np.nonzero
تعيد np.nonzero(arr) صفيفًا من المصفوفات، واحدة لكل بُعد، تحتوي على فهارس العناصر غير الصفرية.
import numpy as np
arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols) # [0 1 1] [1 0 2]الفهرسة باستخدام Ellipsis
توسّع ... (Ellipsis) إلى العدد اللازم من : لتغطية الأبعاد المتبقية.
import numpy as np
arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape) # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape) # (2, 3, 4) — last dim=0np.ix_ للفهرسة الخارجية
تنشئ np.ix_ شبكة مفتوحة من عدة متتاليات أحادية البعد لاستخدامها في الفهرسة المتقدمة بأسلوب الجداء الخارجي.
import numpy as np
m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1 3]
# [11 13]
# [21 23]]الإسناد إلى فهرس متقدم
يمكنك إسناد قيم إلى تحديد مفهرس بطريقة متقدمة مباشرةً.
import numpy as np
arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr) # [ 0. 10. 0. 20. 0.]
# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr) # [99. 10. 99. 20. 99.]الفرق بين العرض والنسخة في الفهرسة
الفهرسة الأساسية/التقطيع ← عرض (يؤدي التعديل إلى تغيير الأصل). الفهرسة المتقدمة/المنطقية ← نسخة (لا يؤدي التعديل إلى تغيير الأصل).
import numpy as np
arr = np.arange(5)
view = arr[1:4] # view
view[0] = 99
print(arr) # [0 99 2 3 4]
copy = arr[[1,2,3]] # fancy → copy
copy[0] = 0
print(arr) # unchangedتحقّق سريع
هل تعيد الفهرسة المنطقية/المتقدمة عرضًا أم نسخة؟
مراجعة
استخدم [row, col] للعناصر المفردة، وstart:stop:step للتقطيع (العروض)، والمصفوفات المنطقية للتنقية (النسخ)، والمصفوفات الصحيحة للفهرسة المتقدمة (النسخ). استخدم np.where للحصول على الفهارس، وnp.ix_ لإنشاء الشبكات الخارجية.
الأسئلة الشائعة
هل درس «الفهرسة والتقطيع والفهرسة المتقدمة» مجاني؟
نعم — نص درس «الفهرسة والتقطيع والفهرسة المتقدمة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «الفهرسة والتقطيع والفهرسة المتقدمة»؟
ادخل إلى عناصر المصفوفات وعدّلها باستخدام تقنيات الفهرسة المتقدمة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الفهرسة والتقطيع والفهرسة المتقدمة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مصفوفات NumPy وأنواع البيانات dtypes
- عمليات المصفوفات والبث
- الفهرسة والتقطيع والفهرسة المتقدمة
- الجبر الخطي باستخدام NumPy