کتابخانه NumPy پایتون برای کاربران متلب

 

 

 

مقدمه

 

متلب (MATLAB) و کتابخانه NumPy پایتون (Python) دارای موارد مشترک زیادی هستند اما NumPy برای کار با پایتون ایجاد شده است و یک کپی از متلب نیست. راهنمایی که در اینجا ارائه شده است، به کاربران متلب کمک میکند تا شروع کار با NumPy را بهتر انجام دهند.

 

 

برخی تفاوتهای کلیدی

 

در متلب، نوع داده اصلی، حتی برای نمونه اسکالر (تک عدد)، یک آرایه چندبعدی (Multidimensional) است. مقداردهی به آرایه در متلب به صورت یک آرایه دوبعدی از اعداد از نوع اعشاری با دقت double precision است مگر اینکه تعداد ابعاد و نوع داده را به طور مشخص، چیز دیگری تعیین کنید. عملیات روی نمونه آرایه‌های دوبعدی به صورت عملیات ماتریسی در جبر خطی انجام میشود.

در NumPy، نوع داده اصلی یک آرایه چند بعدی از کلاس array است. مقداردهی در NumPy به صورت آرایه n-بعدی با حداقل نوع داده لازم به لحاظ حافظه مصرفی برای نگه داشتن شیء (object) مورد نظر است مگر اینکه تعداد ابعاد و نوع داده را به طور مشخص، چیز دیگری تعیین کنید. NumPy، عملیات را به صورت عضو به عضو (element-wise) انجام میدهد و بنابراین ضرب آرایه‌های دوبعدی با عملگر * یک ضرب ماتریسی (مشابه آنچه که در متلب اتفاق می‌افتد) نیست و یک ضرب عضو به عضو است (برای ضرب ماتریسی از عملگر @ در پایتون 3.5 به بعد، استفاده میشود).

 

متلب، اندیسها را از 1 شماره‌گذاری میکند و برای مثلا آرایه a، اولین عضو آرایه، a(1) است.

NumPy همچون پایتون، اندیسها را از 0 شماره‌گذاری میکند و برای آرایه نمونه a، اولین عضو، a[0] است. دقت کنید که انتخاب عضو آرایه در متلب با () و در NumPy (و البته پایتون) با [] است.

 

زبان برنامه‌نویسی متلب برای جبر خطی ایجاد شد و به همین دلیل نحوه نگارش (syntax) آن برای برخی عملیات روی آرایه‌ها نسبت به NumPy، فشرده‌تر و ساده‌تر است. از طرف دیگر، واسط برنامه نویسی کاربردی یا API آن برای افزودن واسطهای گرافیکی و تولید یک برنامه کاربردی (application) کامل کمابیش اولویت بعدی است. 

NumPy بر اساس پایتون است که یک زبان چندمنظوره است. مزیت NumPy، دسترسی به کتابخانه‌های پایتون همچون SciPy، Matplotlib، Pandas، OpenCV و موارد دیگر است. به علاوه، پایتون اغلب به صورت یک زبان برنامه‌نویسی در نرم‌افزاری دیگر قرار میگیرد و به اصطلاح Embedded است که در نتیجه به NumPy نیز اجازه استفاده در این موقعیت را میدهد. 

 

جداسازی بخشی از آرایه یا به عبارت دیگر قطعه‌بندی آن در متلب مبتنی بر مقدار عددی و تحت یک فرآیند ساده ایجاد مرجع برای داده کپی شده (copy on write) برای جلوگیری از تولید کپی جدید تا زمانیکه واقعا نیاز نباشد، است. عملیات قطعه‌بندی آرایه، بخشهایی از آرایه را کپی میکند. 

قطعه‌بندی آرایه در NumPy، مبتنی بر ارجاع به آدرس است که در آن کپی انجام نمیشود. عملیات قطعه‌بندی آرایه، نماهایی به آرایه است و نه کپی از آن.

 

 

عبارتهای معادل 

 

در ادامه، عبارتهای معادل برای برخی عبارتهای رایج در متلب آمده است. اینها، عبارتهای مشابه هستند و نه یکسان. 

برای عبارتهای معادل در NumPy، فرض بر این است که قبل از کد مورد نظر، عبارت زیر اجرا شده است:

 

 

 

 

 

عبارتهای معادل با کاربرد عمومی

 

 

 

عبارتهای معادل جبرخطی

 

 

 

 

 

منبع: www.numpy.org