کتابخانه SciPy یک ابزار بینظیر و قدرتمند در حوزه محاسبات علمی و مهندسی به شمار میآید. به طوری که محققان، مهندسان و دانشمندان زیادی برای دادهکاویهای خود به آن وابستهاند. SciPy تا حد زیادی مرهون کتابخانه NumPy است. در ادامه با آرایهها، متدها، نحوه نصب و آموزش مقدماتی کتابخانه SciPy آشنا خواهیم شد:
فهرست مطالب
- کتابخانه SciPy چیست؟
- ویژگیهای کتابخانه SciPy چیست؟
- منظور از آرایه در کتابخانه SciPy چیست؟
- ویجتها و متدهای کتابخانه SciPy چیست؟
- آموزش مقدماتی کتابخانه SciPy در پایتون
- استفاده از سرویس ژوپیتر لب ابر فردوسی
کتابخانه SciPy چیست؟
SciPy شکل مخفف شده Scientific Python است و از آن در حوزه محاسبات علمی و فنی استفاده می شود. SciPy یک کتابخانه پایتونی منبع باز میباشد که بر اساس کتابخانه NumPy ساخته شده است. در واقع کتابخانه SciPy با افزودن مجموعه قابل توجهی از الگوریتمها و دستورات سطح بالا NumPy را تقویت میکند.
این الگوریتمها و دستورات سطح بالا برای انجام محاسبات علمی پیچیده ضروری هستند، و آرایههای NumPy را به ماتریسهای بزرگ و چندبعدی به همراه مجموعهای از توابع ریاضی برای کار بر روی این آرایهها مجهز میکند. توسعه SciPy در سال 2001 با راهنمایی تراویس اولیفانت، پیرو پترسون و اریک جونز و دیگران آغاز شد.
ویژگیهای کتابخانه SciPy چیست؟
دلایل زیادی وجود دارد که چرا SciPy به کتابخانه مهمی برای محاسبات علمی تبدیل شده است. کتابخانه SciPy به دلیل وجود مجموعه گستردهای از توابع و الگوریتمهای خود مشهور است. در ادامه برخی از ویژگی های مهم SciPy آمده است:
- SciPy الگوریتمهای زیادی برای بهینه سازی و کمینه سازی تابع (اسکالر یا چند بعدی)، برازش منحنی و ریشهیابی دارد.
- این کتابخانه به منظور یکپارچه سازی، روتینهایی را برای ادغام عددی توابع، انتگرالهای معین و نامعین اراوه میدهد.
- SciPy قابلیتهای جبر خطی پیشرفته، از جمله تجزیه ماتریس و حل کننده سیستمهای خطی دارد.
- طیف گستردهای از توابع آماری، از آمار توصیفی اولیه تا تستهای آماری پیچیده و توزیعهای احتمالی دارد.
- ابزارهای پردازش سیگنال SciPy شامل فیلتر کردن، کانولوشن و تبدیل فوریه است که برای تجزیه و تحلیل و دستکاری دادههای سری زمانی بسیار مهم هستند.
- این کتابخانه قادر به پردازش تصویراست و ابزارهایی برای فیلتر کردن، تبدیل و تجزیه و تحلیل تصاویر ارائه میدهد.
- SciPy از عملیات ماتریس پراکنده پشتیبانی میکند، که برای مدیریت کارآمد مجموعه دادههای بزرگ با عناصر صفر بسیار ضروری هستند.
- وجود جامعه بزرگ و فعال از توسعه دهندگان تضمین میکند که SciPy به طور مداوم بهروز، مستند و پشتیبانی میشود.
- قابلیت ادغام با NumPy، Matplotlib (برای ترسیم) و پانداها (برای دستکاری دادهها) دارد.
- بسیاری از الگوریتمهای SciPy در C یا Fortran پیادهسازی میشوند و کارایی بالایی دارند.
- این کتابخانه همچنین از کتابخانههای جبر خطی بهینه شده مانند BLAS و LAPACK استفاده میکند.
منظور از آرایه در کتابخانه SciPy چیست؟
منظور از آرایه در کتابخانه SciPy، هر گونه ساختار توالی مانند است که دارای دادههایی برای پردازش باشند. در واقع در این کتابخانه، آرایهها ساختارهایی هستند که برای مدیریت دادههای عددی استفاده میگردند.
این آرایهها معمولاً توسط کتابخانه NumPy ارائه میشوند. آرایههای NumPy (ndarray) هستهای هستند که SciPy پیرامون آن ساخته میشود و ذخیرهسازی و عملیات کارآمدی را در مجموعههای داده بزرگ ارائه میدهد.
ویجتها و متدهای کتابخانه SciPy چیست؟
SciPy ویجتهای مخصوص به خود را ندارد که به عنوان “ویجتهای SciPy ” نامگذاری شوند. اما میتوان آن را با کتابخانههای دیگر از قبیل ipywidget و bokeh ادغام نمود تا ویجتهای تعاملی برای تجسم و دستکاری دادهها ایجاد کند.
اما در مورد متدهای SciPy کاملا برعکس است. کتابخانه SciPy مجموعه گستردهای از متدها (Methods) را در زیر ماژولهای متنوع خود برای کارهای مختلف محاسباتی ارائه میدهد. در ادامه نگاهی دقیق به برخی از متدهای مهم SciPy آورده شده است:
بهینه سازی (scipy.optimize)
- Minimize: یک تابع اسکالر که یک یا چند متغیر را با استفاده از الگوریتمهای مختلف (مانند BFGS، Nelder-Mead) به حداقل میرساند.
- curve_fit: یک تابع را در مجموعهای از نقاط داده قرار میدهد.
- ریشه: ریشههای یک تابع را پیدا میکند.
- linprog: مسائل برنامه ریزی خطی را حل میکند.
- minimum_squares: یک مسئله حداقل مربعات غیرخطی را حل میکند.
یکپارچه سازی (scipy.integrate)
- quad: انتگرال معین یک تابع را محاسبه میکند.
- dblquad: یک انتگرال دوگانه را محاسبه میکند.
- tplquad: یک انتگرال سه گانه را محاسبه میکند.
- odeint: معادلات دیفرانسیل معمولی را ادغام میکند.
- Sol_ivp: مسائل مقدار اولیه برای سیستمهای ODE را حل میکند.
درون یابی (scipy.interpolate)
- interp1d: یک تابع 1-D را درون یابی میکند.
- interp2d: بر روی یک شبکه دو بعدی درون یابی میکند.
- griddata: دادههای D-D بدون ساختار را درون یابی میکند.
- Rbf: تابع پایه شعاعی را درون یابی میکند.
- UnivariateSpline: یک spline را روی دادهها قرار میدهد.
جبر خطی (scipy.linalg)
- حل: یک سیستم خطی از معادلات را حل میکند.
- inv: معکوس یک ماتریس را محاسبه میکند.
- eig: مقادیر ویژه و بردارهای ویژه یک ماتریس را محاسبه میکند.
- svd: تجزیه مقدار منفرد را انجام میدهد.
- cholesky: تجزیه Cholesky یک ماتریس را محاسبه میکند.
آمار (scipy.stats)
- norm: یک متغیر تصادفی پیوسته نرمال است.
- توصیف: چندین آمار توصیفی از یک مجموعه داده را محاسبه میکند.
- t-test: آزمون T را برای میانگین دو نمونه مستقل انجام میکند.
- pearsonr: ضریب همبستگی پیرسون را محاسبه میکند.
- kde: تخمین چگالی هسته را انجام میدهد.
پردازش سیگنال (scipy.signal)
- convolve: دو آرایه N بعدی را به هم میریزد.
- همبستگی: دو آرایه N بعدی را دارای همبستگی متقاطع میکند.
- find_peaks: پیکها را در یک سیگنال پیدا میکند.
- کره: یک فیلتر Butterworth طراحی میکند.
- طیف نگار: طیف نگاری را با تبدیل فوریه کوتاه مدت محاسبه میکند.
پردازش تصویر (scipy.ndimage)
- gaussian_filter: یک فیلتر گاوسی را روی یک آرایه اعمال میکند.
- sobel: گرادیان سوبل یک تصویر را محاسبه میکند.
- label: اجزای متصل را در یک آرایه برچسب گذاری میکند.
- بزرگنمایی: یک آرایه را بزرگنمایی میکند.
- rotate: یک آرایه را میچرخاند.
توابع ویژه (scipy.special)
- گاما: تابع گاما.
- بتا: تابع بتا.
- erf: تابع خطا.
- bessel: توابع بسل از نوع اول.
- sph_harm: هارمونیک های کروی.
ساختارها و الگوریتم های داده های مکانی (scipy.spatial)
- KDTree: درخت K بعدی برای جستجوی نزدیکترین همسایه.
- Delaunay: مثلث دلونی نقاط.
- ConvexHull: بدنه محدب مجموعه ای از نقاط.
- فاصله: محاسبه فاصله بین نقاط.
آموزش مقدماتی کتابخانه SciPy در پایتون
آموزش کتابخانه SciPy شامل ترکیبی از درک ماژولهای اصلی، تمرین با عملکردهای مختلف آنها و به کارگیری دانش در سناریوهای دنیای واقعی است. با دنبال کردن مراحل بالا و تعامل فعال با جامعه توسعهدهندگان و منابع موجود، میتوان در استفاده از SciPy به مهارت رسید. در زیر یک راهنما برای کمک به شما برای شروع کار با SciPy آوردهایم:
برای نصب کتابخانه SciPy در پایتون، میتوانید از pip یا conda استفاده کنید. در ادامه از پیپ استفاده میکنیم:
pip install seaborn
در ادامه به فراخوانی کتابخانه SciPy و دیگر کتابخانههای ضروری مانند NumPy میپردازیم:
import numpy as np
import scipy as sp
SciPy چندین الگوریتم بهینه سازی ارائه میدهد. در اینجا مثالی از یافتن حداقل یک تابع آورده شده است:
SciPy دارای روتینهای یکپارچه سازی قدرتمند است:
SciPy قابلیت های جبر خطی پیشرفته ای را ارائه می دهد:
توابع آماری یکپارچه:
استفاده از سرویس ژوپیتر لب ابر فردوسی
استفاده از ژوپیتر لب به عنوان نسل بعد ژوپیتر نوت بوک، در ابر فردوسی فراهم است. در ادامه به معرفی مزایای آن میپردازیم:
۱- عدم وجود محدودیت زمانی و مکانی
2- قیمت مقرون بهصرفه و پرداخت با روش PAY AS YOU GO
3- امکان انتخاب میزان منابع پردازشی از قبیل CPU، RAM، هارد
4- امکان انتخاب نوع کارتهای گرافیک قدرتمند در ابر فردوسی:
(RTX 2080i (11GB
RTX 3090 (24G)
(32GB) Tesla v100s
Tesla a100 (40GB
5- امکان انتخاب کتابخانهها و افزونه های ژوپیتر لب در ابر فردوسی:
Tensor flow
Pytorch
Pure python
جهت تست رایگان سرویس ژوپیتر لب در ابر فردوسی کلیک نمایید: