ایندکس گذاری آرایه (Array Indexing)
در این بخش با ایندکس گذاری آرایه در نامپای آشنا می شوی. یعنی یاد می گیری چطور با شماره گذاری خانه ها، مقدارهای داخل آرایه های معمولی، دوبعدی و سه بعدی را دقیق برداری.
دسترسی به عناصر آرایه یک بعدی
ایندکس گذاری آرایه یعنی دسترسی به عنصر با استفاده از شماره خانه. در نامپای هم مثل پایتون، شماره گذاری از صفر (0) شروع می شود. یعنی عنصر اول ایندکس 0 دارد، دومی 1، سومی 2 و همین طور جلوتر.
در مثال زیر، عنصر اول آرایه را با ایندکس 0 می گیریم.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[0])
حالا همان آرایه را داریم، اما این بار عنصر دوم را می گیریم. پس باید از ایندکس 1 استفاده کنیم.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[1])
می توانی چند عنصر را با هم استفاده کنی. مثلا عنصر سوم و چهارم را بردار و جمع کن.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[2] + arr[3])
ایندکس گذاری آرایه های 2 بعدی
برای آرایه های 2 بعدی، از دو عدد جداشده با کاما استفاده می کنیم. عدد اول شماره سطر است. عدد دوم شماره ستون است. می توانی آرایه را مثل یک جدول مدرسه تصور کنی؛ سطرها و ستون ها.
در مثال زیر، عنصر سطر اول و ستون دوم را برمی داریم.
import numpy as np
arr = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
print("2nd element on 1st row:", arr[0, 1])
حالا عنصر سطر دوم و ستون پنجم را می خواهیم. پس ایندکس سطر 1 و ستون 4 می شود؛ چون شمارش از صفر شروع می شود.
import numpy as np
arr = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
print("5th element on 2nd row:", arr[1, 4])
ایندکس گذاری آرایه های 3 بعدی
در آرایه 3 بعدی، از سه عدد استفاده می کنیم. عدد اول لایه بیرونی را مشخص می کند. عدد دوم آرایه داخل آن لایه است. عدد سوم هم عنصر داخل آن آرایه است.
در مثال زیر، آرایه سه بعدی داریم. می خواهیم عنصر سوم از آرایه دوم در لایه اول را بگیریم.
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]])
print(arr[0, 1, 2])
تجزیه مثال arr[0, 1, 2]
اول عدد 0 را نگاه کن. یعنی از بین دو لایه بیرونی، لایه اول را بردار. پس این بخش می ماند: [[1, 2, 3], [4, 5, 6]].
بعد عدد 1 را نگاه کن. یعنی از بین دو آرایه داخل این لایه، آرایه دوم را بردار. پس این بخش می ماند: [4, 5, 6].
حالا عدد 2 را نگاه کن. یعنی از بین سه عدد این آرایه، عنصر سوم را بردار. پس مقدار نهایی برابر 6 می شود.
ایندکس منفی (Negative Indexing)
در پایتون و نامپای می توانی از ایندکس منفی هم استفاده کنی. ایندکس منفی یعنی شمردن از انتهای آرایه. مثلا ایندکس -1 آخرین عنصر است.
در مثال زیر، آخرین عنصر سطر دوم را برمی داریم. پس از ایندکس سطر 1 و ستون -1 استفاده می کنیم.
import numpy as np
arr = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
print("Last element from 2nd dim:", arr[1, -1])
نکته: ایندکس منفی برای گرفتن آخرین عناصر خیلی کاربردی است. مثلا نمره آخر ترم یا آخرین پیام را راحت برمی داری.
قدم بعد از ایندکس گذاری آرایه در نامپای
حالا که با ایندکس گذاری آرایه در نامپای آشنا شدی، قدم منطقی بعدی برش یا Slicing است. برش یعنی گرفتن یک بازه از آرایه، نه فقط یک خانه.
برای مرور ساخت آرایه ها می توانی دوباره صفحه ساخت آرایه ها در نامپای را ببینی. سپس برای ادامه مسیر، به صفحه برش آرایه ها در نامپای برو.
اگر خواستی همین مبحث را به انگلیسی بخوانی، صفحه Array Indexing در W3Schools منبع اصلی است. برای توضیحات عمیق تر، مستندات رسمی NumPy Doc همیشه در دسترس است.
جمع بندی سریع
- ایندکس گذاری آرایه در نامپای از صفر شروع می شود.
- در آرایه های 2 بعدی، فرم arr[row, col] استفاده می شود.
- در آرایه های 3 بعدی، سه عدد برای سه سطح به کار می رود.
- ویژگی مهم ایندکس منفی، دسترسی راحت از انتهای آرایه است.
- بعد از ایندکس گذاری، نوبت تمرین برش یا Slicing است.