ایندکس گذاری و برش گذاری در آرایه ها و ماتریس های SciPy
SciPy به شما امکان می دهد با استفاده از تکنیک های ایندکس گذاری و برش گذاری قدرتمند، به طور کارآمد به عناصر خاص آرایه ها و ماتریس های خود دسترسی پیدا کرده و آنها را دستکاری کنید. این قابلیت ها برای انتخاب زیرمجموعه های دلخواه از داده های شما و انجام عملیات مختلف بر روی آنها بسیار مفید هستند.
در این بخش، به بررسی مفاهیم کلیدی ایندکس گذاری و برش گذاری در SciPy و نحوه استفاده از آنها برای کار با آرایه ها و ماتریس ها می پردازیم.
۱. ایندکس گذاری پایه
در SciPy، ایندکس گذاری از ۰ شروع می شود. به این معنی که اولین عنصر در یک آرایه یا سطر اول یک ماتریس دارای ایندکس ۰ است. برای دسترسی به عناصر یا ردیف های خاص، می توانید از ایندکس های عددی منفرد یا دامنه های ایندکس استفاده کنید.
مثال ۱: دسترسی به عناصر آرایه تک بعدی:
import numpy as np
array_1d = np.array([۱۰, ۲۰, ۳۰, ۴۰, ۵۰])
# دسترسی به عنصر سوم (با ایندکس ۲)
element_3 = array_1d[۲]
# دسترسی به عنصر آخر (با ایندکس -۱)
last_element = array_1d[-۱]
مثال ۲: دسترسی به ردیف ها و ستون های ماتریس:
array_2d = np.array([[۱, ۲, ۳],
[۴, ۵, ۶],
[۷, ۸, ۹]])
# دسترسی به ردیف دوم (با ایندکس ۱)
row_2 = array_2d[۱, :]
# دسترسی به ستون سوم (با ایندکس ۲)
column_3 = array_2d[:, ۲]
# دسترسی به عنصر در ردیف ۲ و ستون ۳
element_2_3 = array_2d[۱, ۲]
۲. برش گذاری برای انتخاب زیرمجموعه ها
برش گذاری به شما امکان می دهد زیرمجموعه های دلخواه از آرایه ها و ماتریس ها را بر اساس ایندکس ها انتخاب کنید. برای برش گذاری از علامت :
و اعداد صحیح برای تعیین شروع و پایان زیرمجموعه استفاده می شود.
مثال ۳: برش گذاری بخشی از آرایه تک بعدی:
array_1d = np.array([۱۰, ۲۰, ۳۰, ۴۰, ۵۰])
# انتخاب سه عنصر از ابتدا (زیرمجموعه [۰:۳])
subarray_1 = array_1d[۰:۳]
# انتخاب دو عنصر از وسط (زیرمجموعه [۲:۴])
subarray_2 = array_1d[۲:۴]
# انتخاب همه عناصر به جز اولین و آخرین عنصر (زیرمجموعه [۱:-۱])
subarray_3 = array_1d[۱:-۱]
مثال ۴: برش گذاری بخشی از ماتریس:
array_2d = np.array([[۱, ۲, ۳],
[۴, ۵, ۶],
[۷, ۸, ۹]])
# انتخاب ردیف اول و ستون های ۱ و ۲ (زیرمجموعه [۰, :, ۱:۳])
submatrix_1 = array_2d[۰, :, ۱:۳]
# انتخاب ردیف های ۱ و ۲ و ستون آخر (زیرمجموعه [۱:۳, :, -۱])
submatrix_2 = array_2d[۱:۳, :, -۱]
# انتخاب زیرماتریس مورب (زیرمجموعه [:, ::-۱])
submatrix_3 = array_2d[:, ::-۱]
۳. برش گذاری با گام
می توانید از گام در برش گذاری برای انتخاب عناصری با فاصله منظم از یکدیگر استفاده کنید. برای این کار، از علامت :
و سپس دو عدد صحیح جدا شده با کاما استفاده می شود که اولی نشان دهنده شروع، دومی نشان دهنده انتهای زیرمجموعه و سومی نشان دهنده گام است.
مثال ۵: انتخاب عناصر با فاصله ۲ از آرایه تک بعدی:
array_1d = np.array([۱۰, ۲۰, ۳۰, ۴۰, ۵۰])
# انتخاب عناصر با فاصله ۲ از ابتدا (زیرمجموعه [::۲])
subarray_1 = array_1d[::۲]
# انتخاب عناصر با فاصله ۲ از وسط (زیرمجموعه [۲:۴:۲])
subarray_2 = array_1d[۲:۴:۲]
مثال ۶: انتخاب عناصر با گام در ماتریس:
array_2d = np.array([[۱, ۲, ۳],
[۴, ۵, ۶],
[۷, ۸, ۹]])
# انتخاب عناصری از ردیف اول و ستون های ۱ و ۲ با گام ۲ (زیرمجموعه [۰, ::۲, ۱:۳:۲])
submatrix_1 = array_2d[۰, ::۲, ۱:۳:۲]
# انتخاب عناصری از ردیف های ۱ و ۲ و ستون آخر با گام ۱ (زیرمجموعه [۱:۳:۱, :, -۱])
submatrix_2 = array_2d[۱:۳:۱, :, -۱]
نکات مهم:
- برش گذاری همیشه از چپ به راست عمل می کند.
- می توانید از ترکیب ایندکس گذاری پایه، برش گذاری و گام برای انتخاب زیرمجموعه های پیچیده تر از داده های خود استفاده کنید.
- برای اطلاعات بیشتر در مورد ایندکس گذاری و برش گذاری در SciPy، می توانید به مستندات SciPy مراجعه کنید:
- مستندات NumPy در مورد ایندکس گذاری: https://docs.scipy.org/
- مستندات NumPy در مورد برش گذاری: https://docs.scipy.org/
۴. ایندکس گذاری بولین
ایندکس گذاری بولین به شما امکان می دهد از آرایه های بولین برای انتخاب زیرمجموعه های آرایه ها و ماتریس ها بر اساس شرایط خاص استفاده کنید.
مثال ۷: انتخاب عناصر آرایه تک بعدی بر اساس شرط:
array_1d = np.array([۱۰, ۲۰, ۳۰, ۴۰, ۵۰])
# انتخاب عناصری که بزرگتر از ۳۰ هستند
condition_array = array_1d > ۳۰
subarray_1 = array_1d[condition_array]
# انتخاب عناصری که زوج هستند
condition_array = array_1d % ۲ == ۰
subarray_2 = array_1d[condition_array]
مثال ۸: انتخاب عناصر ماتریس بر اساس شرط:
array_2d = np.array([[۱, ۲, ۳],
[۴, ۵, ۶],
[۷, ۸, ۹]])
# انتخاب عناصری از ردیف ۱ و ستون های ۱ و ۲ که بزرگتر از ۴ هستند
condition_array = array_2d[۱, ۱:۳] > ۴
submatrix_1 = array_2d[۱, ۱:۳][condition_array]
# انتخاب عناصری از ردیف های ۱ و ۲ و ستون آخر که زوج هستند
condition_array = array_2d[۱:۳, -۱] % ۲ == ۰
submatrix_2 = array_2d[۱:۳, -۱][condition_array]
در این مثال ها، از آرایه های بولین برای تعریف شرایطی که می خواهیم عناصر بر اساس آن ها انتخاب شوند، استفاده می شود.
ایندکس گذاری بولین به شما امکان می دهد عملیات پیچیده تری را برای انتخاب زیرمجموعه های دلخواه از داده های خود انجام دهید.
برای اطلاعات بیشتر در مورد ایندکس گذاری بولین در SciPy، می توانید به مستندات SciPy مراجعه کنید:
- مستندات NumPy در مورد ایندکس گذاری بولین: https://docs.scipy.org/
**با ترکیب ایندکس گذاری پایه، برش گذاری و ایندکس گذاری بولین، می توانید به طور دقیق به هر عنصری در آرایه