0Pricing
Python Academy · درس

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

ادخل إلى عناصر المصفوفات وعدّلها باستخدام تقنيات الفهرسة المتقدمة

الفهرسة والتقطيع والفهرسة المتقدمة درس مجاني في 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=0

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

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

  1. مصفوفات NumPy وأنواع البيانات dtypes
  2. عمليات المصفوفات والبث
  3. الفهرسة والتقطيع والفهرسة المتقدمة
  4. الجبر الخطي باستخدام NumPy
← العودة إلى Python Academy