Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الفهرسة البعدية

الدرس 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] نأخذ جميع العناصر الأولى وفي كل عنصر نأخذ العنصر رقم 0
  • ary[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, :]
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

بإعطاء مصفوفة ثلاثية الأبعاد 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