در پایتون می توانیم لیست ها و تاپل ها را اسلایس بندی کنیم، به طوری که تنها تعداد محدودی از عنصرها در خروجی نشان داده شوند. اگر تعداد عنصرهای درون لیست و تاپل برابر با n باشد، اولین عصنر دارای اندیس صفر و آخرین عنصر دارای اندیس n-1 است. برای دسترسی به هر کدام از عنصرها، باید از شماره اندیس آن و درون براکت های باز و بسته و به صورت [variable_name[index_number استفاده کنید. در مورد آرایه های NumPy نیز چنین مواردی وجود دارد. به طور کلی برای اسلایس بندی آرایه های NumPy باید از الگوی زیر استفاده کنید.

در کدهای زیر ابتدا یک آرایه ۱۰ عنصری از عددهای صفر تا ۹ ایجاد می کنیم و سپس به دو روش تنها ۵ عنصر اول را نشان می دهیم و سپس به دو روش ۵ عنصر دوم را نشان می دهیم. سپس عنصرهای از اندیس ۵ تا عنصر با اندیس ۸ را نشان می دهیم.

در کدهای زیر ابتدا عنصر با اندیس شماره ۵ نمایش داده می شود. سپس توسط اندیس گذاری عدد منفی و توسط عدد -1 آخرین عنصر درون آرایه نمایش داده می شود. به عبارت دیگر برای دسترسی به آخرین عنصر درون آرایه می توان از عدد 1- و برای دسترسی به یکی مانده به آخرین عنصر از عدد 2- و به همین ترتیب استفاده کنیم.

در کدهای زیر می خواهیم با استفاده از تعیین تعداد گام ها، به ترتیب عددهای زوج و فرد میان عددهای صفر تا ۱۰۰ را پیدا کنیم. عدد صفر اولین عدد زوج و عدد یک اولین عدد فرد درون مجموعه عددهای طبیعی است. در آرایه arr2 عدد صفر اولین عدد درون آرایه است، پس دارای اندیس شماره صفر است و عدد یک دومین عدد درون آرایه ست، پس دارای اندیس شماره ۱ است. سپس برای هر دو مجموعه عددهای فرد و زوج، دو گام دو گام درون آرایه پیش می رویم و عددها را به ترتیب درون متغیرهای even_numbers و odd_numbers ذخیره می کنیم.

سورس برنامه این مطلب

کاربرد اسلایس بندی آرایه های NumPy در پردازش تصویر با OpenCV و پایتون: دسترسی به پیسکل ها در پایتون و OpenCV

اسلایس بندی آرایه های چند بعدی NumPy

آنچه که در بالا توضیح دادیم مربوط به اسلایس بندی آرایه های یک بعدی بود که از نظر عملکرد بسیار شبیه به اسلایس بندی لیست ها در پایتون است. اما اگر آرایه دو یا بیشتر بعد داشته باشیم، اسلایس بندی نیز از نظر عملکرد تفاوتی ندارد و دقیقا همان مفاهیم بالا را شامل می شود ولی باید توجه کنید که چندین اسلایس بندی وجود خواهد داشت.

ماتریس های چند بعدی، مانند مارتریس mxn دو بعدی دارای m سطر و n ستون هستند. در پردازش تصویر و به ویژه در کتابخانه OpenCV، پس از اینکه تصویری خوانده شود، این تصویر به صورت یک آرایه (ماتریس) دو بعدی mxn درون حافظه بارگذاری می شود. هر درایه ماتریس نشان دهنده یک پیسکل از تصویر است،  پس لازم است برای دسترسی به یک پیسکل خاص در مخصتات سطر m ام و ستون n ام باید دو اسلایس را تعیین کنیم.

بنابراین در ماتریس دو بعدی باید دو اسلایس، اولی برای سطرها و دومی برای ستون ها را تعیین کنید. در کد شکل های زیر دو ماتریس 3x3 ایجاد شده اند. ماتریس متغیر image1 توسط متد ()zeros و ماتریس متغیر image2 به صورت دستی تعریف شده اند و سپس به ترتیب دو سطر و دو ستون از متغیر image2 و سپس دو سطر و سه ستون از متغیر image2 برش (یا اسلایس) خورده اند.

سورس برنامه این مطلب NumPy array slicing

کاربرد اسلایس بندی در پردازش تصویر با OpenCV و پایتون: دسترسی به پیسکل ها در پایتون و OpenCV