آموزش محاسبات علمی کتابخانه scipy در پایتون

کتابخانه scipy در پایتون
مقالات پایتون
مدت زمان مطالعه : دقیقه
  • 0 نفر پسندیدند
  • ذخیره کردن
  • 999
فهرست
  • چرا باید از SciPy استفاده کنیم؟
  • کتابخانه Numpy: Numpy در مقابل SciPy
  • آموزش کتابخانه های پایتون
  • بسته ورودی/خروجی فایل کتابخانه scipy در پایتون
  • سخن پایانی

آموزش محاسبات علمی کتابخانه scipy در پایتون

کتابخانه scipy در پایتون، یک کتابخانه منبع‌باز است که برای حل مسائل ریاضی، علمی، مهندسی و فنی استفاده می‌شود. این کتابخانه به کاربران اجازه می‌دهد تا داده‌ها را دستکاری کنند و آنها را با استفاده از طیف گسترده‌ای از دستورات سطح بالای پایتون تجسم کنند. SciPy بر اساس توسعه Python NumPy ساخته شده است. گاهی نام این کتابخانه «Sigh Pi» تلفظ می‌شود.

چرا باید از SciPy استفاده کنیم؟

  • کتابخانه scipy در پایتون دارای انواع بسته‌های فرعی است که به شما کمک می‌کند رایج‌ترین مشکلات مربوط به‌محاسبات علمی را به‌‌راحتی حل کنید.
  • این کتابخانه، پر استفاده‌ترین کتابخانه علمی است و بعد از کتابخانه علمی GNU برای C/C++ یا Matlab در رتبه دوم قرار دارد.
  • کتابخانه scipy در پایتون قدرت محاسباتی سریعی دارد و یادگیری و استفاده از آن ساده است.
  • این کتابخانه می‌تواند با آرایه‌های (ساختار داده) NumPy کار کند.

کتابخانه Numpy: Numpy در مقابل SciPy

Numpy:

  • Numpy به‌زبان C نوشته می‌شود و برای محاسبات ریاضی یا عددی قابل استفاده است.
  • این کتابخانه سریع‌تر از سایر کتابخانه‌های پایتون است.
  • Numpy مفیدترین کتابخانه برای انجام محاسبات اولیه در علم داده است.
  • Numpy حاوی چیزی جز نوع داده آرایه نیست که ابتدایی‌ترین عملیات مانند مرتب‌سازی، شکل‌دهی و نمایه‌سازی را انجام می‌دهد.

SciPy:

  • کتابخانه scipy در پایتون بالای NumPy ساخته شده است.
  • کتابخانه scipy در پایتون یک نسخه کامل از جبر خطی است، درحالی‌که Numpy فقط دارای تعدادی از این امکانات است.
  • بیشتر امکانات جدید Data Science در Scipy در دسترس هستند و Numpy فاقد آنها است.

آموزش کتابخانه های پایتون

باتوجه به ‌اهمیت کتابخانه‌هایNumpy، Scipy و Matlab، و ارتباط آنها با هم، ما در این‌جا مطالبی را درباره این کتابخانه آموزش می‌دهیم. با این حال، رویکرد اصلی این مقاله کتابخانه scipy در پایتون است. دو کتابخانه دیگر در جهت فهم بهتر این کتابخانه آورده شده‌اند. شما می‌توانید برای اطلاعات بیشتر انواع کتابخانه های پایتون را مطالعه کنید.

نصب کتابخانه در پایتون (ایجاد کتابخانه در پایتون)

نصب کتابخانه numpy در پایتون

پایتون را بر اساس سیستم عامل از www.python.org دانلود و نصب کنید. پایتون باید قبل از نصب NumPy نصب شود. پس از نصب پایتون، Numpy را با استفاده از دستورات زیر بر روی سیستم عامل ویندوز نصب نمایید:

  1. NumPy را با استفاده از دستور PIP زیر در ترمینال خط فرمان نصب کنید:

command pip install numpy

نصب numpy

نصب به طور خودکار شروع می‌شود و Numpy با آخرین نسخه خود با موفقیت نصب می‌شود.

  1. با تایپ این دستور در cmd، نصب NumPy را تأیید کنید: pip show Numpy. این‌کار مکان و نسخه numpy نصب‌شده را نشان می‌دهد.
  2. بسته NumPy را وارد کنید.

الف) برای این کار با تایپ کردن: Python، محیط پایتون را در cmd ایجاد کنید.

وارد کردن NumPy

بسته ONE NumPy را وارد کنید

ب) دستور import numpy را به صورت np تایپ کنید.

وارد کردن بسته های NumPy

  1. NumPy را با استفاده از این دستور ارتقا دهید: pip install – upgrade numpy

numpy را ارتقا دهید

با انجام تمامی مراحل فوق، Numpy با موفقیت نصب می‌شود.

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

برای راه‌اندازی موتور MATLAB® در پایتون، ابتدا باید API موتور را به‌عنوان یک بسته پایتون نصب کنید.

قبل از نصب، تنظیمات پایتون و متلب خود را تأیید کنید. برای این‌کار:

  • بررسی کنید که سیستم شما دارای نسخه پشتیبانی شده از Python و MATLAB R2014b یا جدیدتر باشد.
  • برای بررسی این‌که پایتون روی سیستم شما نصب شده است یا نه، پایتون را در اعلان سیستم عامل اجرا کنید. مطمئن شوید که مسیر پایتون در متغیر محیط مسیر سیستم شما (system path environment variable ) گنجانده شده است.
  • پوشه‌ای که حاوی مفسر پایتون است را به مسیر خود اضافه کنید.

پس از این مراحل، به‌سراغ نصب Engine API بروید.

می‌توانید API موتور MATLAB را برای پایتون با استفاده از دستور pip یا اسکریپت تنظیم پایتون setup.py نصب کنید.

  • نصب با استفاده از pip

در MATLAB R2022b، می‌توانید از دستور pip برای نصب API استفاده کنید. برای این‌کار یکی از روش‌های زیر را در پیش بگیرید:

  1. برای نصب از پوشه MATLAB، در Windows® را تایپ کنید:

cd “matlabroot\extern\engines\python”

python -m pip install .

  1. API موتور را از https://pypi.org/project/matlabengine با دستور زیر نصب کنید:

python -m pip install matlabengine

  • نصب با استفاده از py

متلب یک فایل setup.py استاندارد پایتون را برای ساخت و نصب موتور با استفاده از تنظیمات پایتون فراهم می‌کند که می‌توانید از آن پیروی کنید.

دانلود کتابخانه  scipy و نصب آن

پس از نصب پایتون، می‌توانید از مدیریت بسته پیپ استاندارد پایتون استفاده کنید و کتابخانه scipy در پایتون را از فهرست بسته Python نصب کنید. برای این‌کار مراحل زیر را در پیش بگیرید:

  1. وب سایت SciPy را در مرورگر اینترنت خود باز کنید. برای این‌کار https://www.scipy.org/ را تایپ‌کرده یا همین آدرس را کپی کرده و در نوار آدرس قرار دهید و ↵ Enter یا ⏎ Return را در صفحه کلید خود بزنید.
  2. روی دکمه Install در صفحه اصلی کلیک کنید. این دکمه مانند یک فلش سبز رو به پایین روی نماد SciPy آبی و سفید است. می‌توانید آن را نزدیک گوشه سمت چپ بالای صفحه پیدا کنید. عکس زیر را ببینید.

دانلود کتابخانه scipy و نصب آن

با این‌کار جزئیات نصب کتابخانه scipy در پایتون در صفحه جدیدی مطابق عکس زیر باز می‌شود.

scipy در پایتون

  1. مطمئن شوید پایتون روی کامپیوتر شما نصب شده است. SciPy یک کتابخانه پایتون منبع‌باز است و به یک توزیع پایه پایتون نیاز دارد که روی سیستم شما نصب شده باشد.

اگر پایتون را نصب نکرده‌اید، می‌توانید یکی از توزیع‌های توصیه‌شده را در عنوان «توزیع‌های علمی پایتون» (Scientific Python Distributions ) انتخاب کنید و آن را در رایانه خود نصب کنید.

Command

  1. ترمینال خط فرمان رایانه خود را باز کنید. می توانید Command Prompt را در ویندوز، Terminal در مک، یا distribution’s Terminal خود را در لینوکس باز کنید.

 scipy در پایتون

  1. python -m pip install -U pip را تایپ کرده و اجرا کنید. این دستور شما را مطمئن می‌کند که آخرین فایل‌های پیپ روی سیستم شما نصب شده‌اند تا وظایف مدیریت بسته را انجام دهند.

برای اجرای دستور، ↵ Enter یا ⏎ Return را فشار دهید.

5. python -m pip install -U pip

  1. pip install scipy را در خط فرمان تایپ کرده و اجرا کنید. این کار از فهرست بسته Python استفاده می‌کند و بسته‌های اصلی کتابخانه scipy در پایتون را روی رایانه شما نصب می‌کند.

همچنین می‌توانید بسته‌های اصلی دیگر مانند Numpy و Matplotlib را با استفاده از دستورات pip install numpy و pip install matplotlib نصب کنید.

حالا که درباره نصب این کتابخانه های یادگیری ماشین در پایتون آموختید، بیایید کمی بیشتر درباره کتابخانه scipy در پایتون یاد بگیریم.

بسته ورودی/خروجی فایل کتابخانه scipy در پایتون

بسته I/O کتابخانه scipy در پایتون دارای طیف گسترده‌ای از توابع برای کار با فرمت فایل‌های مختلف است که عبارتند از Matlab، Arff، Wave، Matrix Market، IDL، NetCDF، TXT، CSV و فرمت باینری.

اجازه دهید یک نمونه از قالب فایل Python SciPy را که معمولا در MatLab استفاده می شود، ببینیم:

import numpy as np
 from scipy import io as sio
 array = np.ones((4, 4))
 sio.savemat('example.mat', {'ar': array}) 
 data = sio.loadmat(‘example.mat', struct_as_record=True)
 data['ar']

برون‌ده یا اوت‌پوت این قالب در کتابخانه scipy در پایتون به شکل زیر است:

ay([[ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.]])

توضیح کد

خط 1 و 2: کتابخانه ضروری SciPy را در پایتون با بسته I/O و Numpy وارد کنید.

خط 3: آرایه یک بعدی 4 x 4 ایجاد کنید

خط 4: آرایه را در فایل example.mat ذخیره کنید.

خط 5: داده ها را از فایل example.mat دریافت کنید

خط 6: خروجی چاپ

بسته عملکرد ویژه (Special Function package)

بسته scipy.special شامل توابع متعددی از فیزیک ریاضی است و شامل ریشه مکعبی، نمایی، مجموع ورود نمایی، لامبرت، جایگشت و ترکیبات، گاما، بسل، هایپرهندسی، کلوین، بتا، استوانه سهموی، نمایی خطای نسبی و غیره است.

تابع ریشه مکعبی

تابع ریشه مکعبی، ریشه مکعب مقادیر را پیدا می کند. Syntax:

scipy.special.cbrt(x)

 مثال آن در کتابخانه scipy در پایتون به شرح زیر است:

from scipy.special import cbrt
#Find cubic root of 27 & 64 using cbrt() function
cb = cbrt([27, 64])
#print value of cb
print(cb)
Output: array([3., 4.])

تابع نمایی

تابع نمایی 10**x element-wise را محاسبه می‌کند.

مثال:

from scipy.special import exp10
#define exp10 function and pass value in its
exp = exp10([1,10])
print(exp)
Output: [1.e+01 1.e+10]

جایگشت‌ها و ترکیب‌ها

SciPy همچنین قابلیت محاسبه جایگشت و ترکیبات را می‌دهد.

ترکیبات – scipy.special.comb(N,k)

مثال آن در کتابخانه scipy در پایتون به شرح زیر است:

from scipy.special import comb
#find combinations of 5, 2 values using comb(N, k)
com = comb(5, 2, exact = False, repetition=True)
print(com)
Output: 15.0

تابع نمایی مجموع ورود به سیستم

Log Sum Exponential لاگ عنصر ورودی مجموع نمایی را محاسبه می‌کند.

Syntax:

scipy.special.logsumexp(x)

تابع بسل

تابع محاسبه ترتیب عدد صحیح N. Syntax:

scipy.special.jn()

جبر خطی با SciPy

جبر خطی SciPy پیاده‌سازی کتابخانه‌های BLAS و ATLAS LAPACK است. عملکرد جبر خطی در مقایسه با BLAS و LAPACK بسیار سریع است. روال جبر خطی شیء آرایه دو بعدی را می‌پذیرد و خروجی نیز یک آرایه دو بعدی است.

محاسبه دترمینان یک ماتریس دو بعدی:

from scipy import linalg
import numpy as np
#define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass values to det() function
linalg.det( two_d_array )
Output: -7.0

مقادیر ویژه و بردار ویژه

scipy.linalg.eig()

رایج‌ترین مسئله در جبر خطی مقادیر ویژه و بردار ویژه است که با استفاده از تابع ()eig به‌راحتی قابل حل است.

اکنون اجازه دهید مقدار ویژه (X) را در کتابخانه scipy در پایتون پیدا کنیم و بردار ویژه یک ماتریس مربع دو بعدی را مطابقت دهیم. مثال:

from scipy import linalg
import numpy as np
#define two dimensional array
arr = np.array([[5,4],[6,3]])
#pass value into function
eg_val, eg_vect = linalg.eig(arr)
#get eigenvalues
print(eg_val)
#get eigenvectors
print(eg_vect)

خروجی:

[ 9.+0.j -1.+0.j] #eigenvalues
 [ [ 0.70710678 -0.5547002 ] #eigenvectors
   [ 0.70710678  0.83205029] ]

تبدیل فوریه گسسته – scipy.fftpack

  • DFT یک تکنیک ریاضی است که در تبدیل داده‌های مکانی به داده‌های فرکانسی استفاده می‌شود.
  • FFT (تبدیل فوریه سریع) الگوریتمی برای محاسبه DFT است.
  • FFT برای یک آرایه چند بعدی در کتابخانه scipy در پایتون اعمال می‌شود.
  • فرکانس تعداد سیگنال یا طول موج را در دوره زمانی خاص مشخص می‌کند.

 

مثال: یک موج را در نظر بگیرید و آن را با استفاده از کتابخانه Matplotlib نمایش دهید. ما مثال تابع تناوبی ساده از sin (20 × 2πt) را در نظر می‌گیریم:

%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np 

#Frequency in terms of Hertz
fre  = 5 
#Sample rate
fre_samp = 50
t = np.linspace(0, 2, 2 * fre_samp, endpoint = False )
a = np.sin(fre  * 2 * np.pi * t)
figure, axis = plt.subplots()
axis.plot(t, a)
axis.set_xlabel ('Time (s)')
axis.set_ylabel ('Signal amplitude')
plt.show()

خروجی به شکل زیر است:

خروجی تبدیل فوریه گسسته

همان‌طور که می‌بینید فرکانس 5 هرتز است و سیگنال آن در 1/5 ثانیه تکرار می‌شود و به‌عنوان یک دوره زمانی خاص فراخوانی می‌شود.

حال اجازه دهید از این موج سینوسی با کمک DFT استفاده کنیم.

from scipy import fftpack

A = fftpack.fft(a)
frequency = fftpack.fftfreq(len(a)) * fre_samp
figure, axis = plt.subplots()

axis.stem(frequency, np.abs(A))
axis.set_xlabel('Frequency in Hz')
axis.set_ylabel('Frequency Spectrum Magnitude')
axis.set_xlim(-fre_samp / 2, fre_samp/ 2)
axis.set_ylim(-5, 110)
plt.show()

برون‌ده در کتابخانه scipy در پایتون به شکل زیر است:

خروجی scipy در پایتون

  • همان‌طور که می‌بینید، خروجی کتابخانه scipy در پایتون یک آرایه یک بعدی است.
  • ورودی حاوی مقادیر مختلط به جز دو نقطه صفر است.
  • در مثال DFT ما بزرگی سیگنال را تجسم می کنیم.

بهینه سازی و تناسب در SciPy – scipy.optimize

بهینه‌سازی یک الگوریتم مفید برای به‌حداقل رساندن برازش منحنی، برازش چند بعدی یا اسکالر و ریشه ارائه می‌دهد.

بیایید یک مثال از یک تابع اسکالر را برای یافتن تابع اسکالر حداقل در نظر بگیریم.

%matplotlib inline
import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np

def function(a):
       return   a*2 + 20 * np.sin(a)
plt.plot(a, function(a))
plt.show()
#use BFGS algorithm for optimization
optimize.fmin_bfgs(function, 0) 

برون‌ده در کتابخانه scipy در پایتون به شکل زیر است:

خروجی scipy

بهینه سازی با موفقیت پایان یافت.

  • مقدار تابع فعلی: -23.241676
  • تکرار: 4
  • ارزیابی عملکرد: 18
  • ارزیابی گرادیان: 6
  • آرایه ([-1.67096375])

سخن پایانی

کتابخانه scipy در پایتون یکی از کتابخانه‌های یادگیری ماشین است که به‌شکل گسترده‌ای در هوش مصنوعی مورد استفاده قرار می‌گیرد. این مقاله آموزش‌های ابتدایی، شیوه نصب، ورود و خروج فایل و برخی دیگر از آموزش‌های مربوط به این کتابخانه را در بر می‌گیرد. با این حال، برای یادگیری و بهره‌مندی از مطالب فوق لازم است دوره مقدماتی پایتون را بگذرانید. همچنین لازم است با فریم ورک های پایتون از جمله فریم ورک ناهمگن و Full-Stack آشنا شوید.

 

منابع:

scaler.com

mathworks.com

 

 

چه امتیازی به این مقاله میدهید

جالب نبود

متوسط

خوب

خیلی خوب

خیلی عالیه

مدیر سایت

نویسنده

مدیر سایت

دیدگاه ها
0 دیدگاه