الفهرسة البعدية
الدرس 13 من 18 في دورة أساسيات Numpy على Coddy.
يدعم Numpy أداة قوية للغاية - فهرسة الأبعاد (Indexing dimensions).
لفهرسة الأبعاد، نستخدم النقطتين الرأسيتين :. تأخذ النقطتان الرأسيتان جميع العناصر في الفهرس المحدد الذي توضع فيه. على سبيل المثال، لنفترض أن لدينا مصفوفة بالشكل ary.shape # --> (2, 1, 3, 1)، فإن وضع النقطتين الرأسيتين : في ary[:, 0, 0, 0] سيأخذ العنصرين الموجودين في أقصى يسار الشكل، ومن أجل كل واحد منهما سيستخرج العنصر الصفري لبقية الأبعاد.
ملاحظة: موقع النقطتين الرأسيتين داخل الأقواس [] هو البعد الذي نقوم بفهرسته، مما يعني:
ary[:, 0, 0, 0]فهرسة البعد رباعي الأبعاد (4D)ary[0, :, 0, 0]فهرسة البعد ثلاثي الأبعاد (3D)ary[0, 0, :, 0]فهرسة البعد ثنائي الأبعاد (2D)ary[0, 0, 0, :]فهرسة البعد أحادي البعد (1D)ary[:, :, 0, 0]فهرسة البعدين رباعي الأبعاد وثلاثي الأبعاد- إلخ
مثال 1
ary = np.array([
[1, 2],
[3, 4]
])
ary[:, 0] # --> [1, 3]
ary[0, :] # --> [1, 2]تأخذ النقطتان الرأسيتان جميع العناصر في الفهرس المحدد وتستمر إلى الفهرس التالي
في حالتنا:
ary[:, 0]نأخذ جميع العناصر الأولى وفي كل عنصر نأخذ العنصر رقم 0ary[0, :]نأخذ العنصر الأول وفي ذلك العنصر نأخذ جميع العناصر.
مثال 2
مصفوفة ثلاثية الأبعاد (3D array)
ary = np.array([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
ary[:, 0, :] # --> [[1, 2], [5, 6]]
ary[:, :, 0] # --> [[1, 3], [5, 7]]ary[:, 0, :]نأخذ جميع العناصر، ثم نأخذ العنصر الأول وفي النهاية نأخذ كل شيء هناكary[:, :, 0]نأخذ جميع العناصر، ثم نأخذ كل هذه العناصر وفي النهاية نأخذ العنصر الأول في كل منها.- هل يمكنك تخمين ما هو الناتج لـ
ary[0, :, :]
مثال 3
الحصول على الفهرس الأول والأخير من كل صف
x = np.array([
[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
])
x[:, np.array([0, -1])]
>>> [0, 5, 6, 11, 12, 17, 18, 23]مثال 4
مصفوفة بالشكل (2, 1, 3, 1) تماماً كما في المثال الافتتاحي
ary = np.array([
[
[
[1],[2],[3]
]
],
[
[
[4],[5],[6]
]
]
])
ary[:, 0, 0, 0] # --> [1, 4]
ary[0, :, 0, 0] # --> [1]
ary[0, 0, :, 0] # --> [1, 2, 3]
ary[0, 0, 0, :] # --> [1]ملاحظة: من الممكن استخدام صيغة التقطيع (slicing): start:stop:step التي تعلمناها في درس Slicing أيضاً
ary[:, 0:5, 2:3, :]
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلبإعطاء مصفوفة ثلاثية الأبعاد ary، استرجع الأرقام الثاني والثالث والرابع من كل مصفوفة أحادية الأبعاد
جرّب بنفسك
import numpy as np
'''
ary looks like:
array([[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]],
[[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]],
[[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]],
[[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]],
[[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]])
'''
ary = np.arange(0, 100).reshape(5, 2, 10) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this lineجميع دروس أساسيات Numpy
2إنشاء مصفوفات N-Dimensional
أبعاد أعلىفهم الأشكالالتعبئة بقيم ثابتةأنواع Numpyالمدى (Range)إعادة التشكيل (Reshape)3فهرسة مصفوفات Numpy
الفهرسة الأساسيةالتقطيع (Slicing)فهرسة المصفوفاتالفهرسة البعديةالفهرسة المنطقية (Boolean)الفهرسة بشروط متعددة