در مطلب بارگذاری داده ها در کتابخانه Scikit-Learn گفتیم که خروجی خصوصیت های iris.data و iris.target از نوع آرایه ها است. در زبان پایتون و بر خلاف زبان هایی مانند سی، سی پلاس پلاس، نوع یا ساختار داده آرایه (Array) وجود ندارد، برای همین کتابخانه (ماژول) NumPy توسعه داده شده است تا قابلیت ایجاد آرایه ها به زبان پایتون افزوده شود.

NumPy (مخفف شده Numerical Python) کتابخانه برای کاربردهای عددی (Numerical) و جبر خطی (Linear Algebra) و عملیات روی ماتریس ها است که در زمینه های یادگیری ماشین، دانش داده ها و داده کاوی بسیار اهمیت دارد. در واقع NumPy کتابخانه ای است که در دیگر ماژول ها مانند SciPy، Matplotlib و Scikit-Learn به کار گرفته شده است.

لیست ها در پایتون

ایجاد آرایه ها از لیست های پایتون

لیست ها یکی از ساختار داده های (Data Sructure) درونی پایتون هستند. هر آرایه شامل توالی از عناصر هم نوع است که به هر یک از این عنصرها یک اندیس انتساب داده می شود. اما در لیست ها عناصر می توانند از هر نوعی مانند عدد صیحیح و رشته باشند. در خط سوم کد زیر یک لیست از چهار عدد صیحیح ایجاد شده است.

در خط پنجم از کد و بوسیله متد ()array یک آرایه تک بعدی به نام my_numpy_list ایجاد شده است. توجه کنید نام متغیر لیست خط سوم به عنوان ورودی به متد ()array فرستاده شده است ولی شما می توانستید یک لیست را به طور دستی و بدون ذخیره سازی در متغیر به عنوان آرگومان به آن بفرستید. در خط پایانی  خصوصیت shape را برای نمایش ابعاد آرایه به کار برده ایم. در این کد یک آرایه تک بعدی با پنج سطر ایجاد کرده ایم.

در کدهای بالا یک آرایه تک بعدی (One-Dimential) ایجاد کردیم ولی می توانیم  متد ()array را برای ایجاد آرایه های nxm که n تعداد سطره ها و m تعداد ستون ها به کار ببریم. در کد زیر یک لیست از لیست ها ایجاد کردیم که همه لیست های درونی خودشان دارای ۳ عنصر هستند که این برابر با است با تعداد ستون ها است و از این رو، تعداد لیست های درونی برابر با تعداد سطرهای ارایه (ماتریس) نهایی خواهد بود.

ایجاد آرایه ها با تابع ()arrange

در کدهای بالا به صورت دستی یک لیست از عناصر (و یا از هر نوع دیگری) را ایجاد کردیم و سپس آنرا به متد ()array فرستادیم تا نتیجه آن از نوع ساختار داده ndarray (یا N-Dimential Array) باشد. در کتابخانه NumPy متدی به نام ()arrange وجود دارد که عملکرد آن شبیه به تابع درونی ()range در خود پایتون است.

کاربرد تابع range در پایتون

این تابع سه آرگومان ورودی که به ترتیب مقدار شروع بازه، مقدار پایانی بازه و تعداد گام های بازه را دریافت می کند. به طور مثال می خواهیم فهرست عددهای زوج صفر تا ۱۰۰ را پیدا کنیم، پس شروع بازه عدد صفر و پایان بازه عدد ۱۰۱ خواهد بود. آرگومان سوم، یعنی تعداد گام های بازه نیز برابر با عدد ۲، یعنی ابتدا عدد صفر، بعد عدد ۲، عدد ۴ و الی آخر.

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

در کد و شکل زیر می بنید که لزومی ندارد حتما آرگومان سوم، یعنی تعداد گام ها مشخص شود. بنابراین اگر این آرگومان را ننویسید، پس تعداد گام ها برابر با عدد یک است. بازهم برای تاکید، در کد های زیر می بنید که می خواهیم آرایه از عددهای ۱ تا خود ۱۰ را ایجاد کنیم، پس در حالت دوم که درست است، عدد ۱۱ به عنوان انتهای بازه تعیین شده است.

ایجاد آرایه ای از صفرها و یک ها

در NumPy دو متد به نام های ()zeros و ()ones وجود دارد که به ترتیب آرایه های تک  و چند بعدی از عدد صفر و یک را ایجاد می کنند. در کدهای زیر به ترتیب آرایه های تک بعدی از صفرها و یک ها به اندازه ۱۰ عنصر را ایجاد کرده ایم.

در کدهای بالا به ترتیب آرایه های دو بعدی 2x4 از عددهای صفر و یک ایجاد شده اند. توجه کنید که یک تاپل (Tuple) از ابعاد به عنوان ورودی به متدهای ()zeros و ()ones فرستاده شده اند.

تاپل ها در پایتون

کاربرد ماتریس های NumPy

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

کاربرد آرایه های NumPy:  نخستین برنامه OpenCV با پایتون

کاربرد آرایه های NumPy و متد ()ones در پردازش تصویر: پردازش تصویر – مقدمه ای بر فیلترها

دانلود سورس برنامه های این مطلب Numpy array create