پایتون (نامپای) برای کاربران متلب و متلب برای کاربران پایتون
دستهبندی: برنامهنویسی
برنامهنویسی علمی/محاسباتی یکی از مهمترین ابزارها در جعبه مهارتهای مورد نیاز برای محققین و مهندسین محسوب میشود. استفاده عمده این ابزار در مدلسازی کامپیوتری مسائل پیچیده مهندسی و شبیهسازی یک پدیده و یا تحلیل دادههای فنی است. در بین انتخابهای موجود در زمینه برنامهنویسی علمی کتابخانه نامپای (numpy) با زبان برنامهنویسی پایتون و نرمافزار متلب دو نمونه از پرکاربرترین موارد هستند. در این مقاله که بر اساس مقالهای با همین نام در وبسایت numpy منتشر شده، سعی بر آن است تا پلی میان دستورات پرکاربرد در هر دو زبان ایجاد شود. لازم به ذکر است که این مقاله به هیچ وجه نقطه خوبی برای شروع یادگیری این دو زبان نبوده و برای استفاده از آن حداقل تسلط نسبی به یکی از زبانها نیاز است. از همین رو ویدلتا در نظر دارد تا با طراحی دورههای آموزشی منحصر به فرد نسبت به ارائه محتوی آموزشی کاربرد محور اقدام نماید. انتشار هر یک از دورهها از طریق همین وبسایت به اطلاع علاقهمندان خواهد رسید.
پیشنهاد میشود از سایر مقالات حوزه برنامهنویسی با استفاده از این لینک دیدن فرمایید. در ضمن حتما برای دریافت آخرین اخبار در حوزه انتشار مقالات جدید در کانال تلگرام این وبسایت به آدرس vdelta_ir عضو شوید.
متلب و نامپای اشتراکات فراوانی دارند هرچند که ضمن اشتراکات بیشمار تفاوتهای جدی میان این دو ابزار محاسباتی وجود دارد. لذا پیش از هرچیزی ذکر این نکته واجب است که مطالب عنوان شده لزوما شامل همه دستورات نمیشوند. یعنی لزوما همه ابزارهای بهینهسازی و تسریع برنامهنویسی در متلب ترجمه یک به یک در نامپای نداشته و همه امکانات نامپای نیز لزوما به صورت رسمی در متلب متناظری ندارد. برای نمونه در متلب هنگامی که قصد داریم به یک درایه خاص در یک ماتریس دسترسی داشته باشیم اصولا این شمارش از عدد یک شروع میشود. یعنی ستون اول از ماتریس A به صورت A(1,:) انتخاب میشود حال آن که شمارش در پایتون از صفر شروع شده و متناظر مثال متلب به صورت A[0] میشود.
در ادامه به معادل دستورات متلب در پایتون (نامپای) و معادل دستورات نامپای در متلب پرداخته میشود.
در رابطه با دستورات نامپای فرض شده است که با استفاده از قطه کد زیر، کتابخانههای لازم در کد پایتون import شدهاند:
نکته: توجه فرمایید که برخی از توابع از scipy ایمپورت شدهاند.
برخی تفاوتهای کلیدی
متلب |
نامپای |
توضیحات |
---|---|---|
|
|
راهنما مربوط به یک تابع (func) |
|
- |
جهت یافتن محلی که تابع func تعریف شده است |
|
|
چاپ متن کد تابع func |
|
|
نحوه نوشتن نظر (کامنت) در کد متناظر با هر یک از زبانها |
for i=1:3 fprintf('%i\n',i) end |
for i in range(1, 4): print(i) |
نحوه چاپ اعداد 1 الی 3 با استفاده از یک حلقه فور (به نحوه نوشتن مقادیر شروع و پایان حلقه در هر یک از زبان ها دقت کنید) |
|
|
نحوه نوشتن AND |
|
|
نحوه نوشتن OR |
>> 4 == 4 ans = 1 >> 4 == 5 ans = 0 |
>>> 4 == 4 True >>> 4 == 5 False |
دستورات منطقی |
a=4 if a==4 fprintf('a = 4\n') elseif a==5 fprintf('a = 5\n') end |
a = 4 if a == 4: print('a = 4') elif a == 5: print('a = 5') |
استفاده از دستور if |
|
|
نحوه نوشتن عدد مختلط |
|
|
کوچکترین مقدار فاصله بین دو مقدار عدد حقیقی double precision |
|
|
بارگذاری اطلاعات در فرمت دات مت |
|
|
حل یک معادله دیفرانسیل به صورت : integrate an ODE with Runge-Kutta 4,5 |
|
|
حل یک معادله دیفرانسیل به صورت : integrate an ODE with BDF method |
دستورهای متناظر در جبرخطی
متلب |
نامپای |
توضیحات |
---|---|---|
|
|
تعداد ابعاد آرایه a |
|
|
تعداد المان های آرایه a |
|
|
اندازه و شکل آرایه a |
|
|
تعداد المان های بعد nام آرایه a |
|
|
تعریف یک ماتریس 2 در 3 |
|
|
ساخت یک ماتریس از چهار بلوک مختلف a، b، c و d |
|
|
آخرین المان از a |
|
|
المان سطر دوم و ستون پنجم |
|
|
سطر دوم |
|
|
انتخاب المانهای موجود در سطرهای 1 الی 5 و همه ستونها |
|
|
5 سطر نهایی از آرایه a |
|
|
انتخاب سطور اول تا سوم و ستونهای پنجم تا نهم در آرایه a |
|
|
انتخاب المانهای محل تلاقی سطور 2، 4 و 5 و ستونهای 1 و 3 |
|
|
انتخاب سطرهای 3 الی 21 با افزایش پلکانی 2 تایی |
|
|
سطور فرد از آرایه a |
|
|
معکوس کردن ترتیب سطور |
|
|
ماتریس a به صورتی که سطر اول آن به انتهایش چسبانده شده است. |
|
|
ترنسپوز کردن ماتریس |
|
|
کانجوگیت ترنسپوز ماتریس |
|
|
ضرب ماتریسی |
|
|
ضرب ماتریسی به صورت المان به المان |
|
|
تقسیم المان به المان ماتریسی |
|
|
به توان رساندن المان به المان ماتریسی |
|
|
تعیین آن که کدام یک از درایه های ماتریس a بزرگتر از 0.5 هستند. |
|
|
اندیس المانهایی از a که از 0.5 بزرگتر هستند را بیاب |
|
|
پیدا کردن ستونهایی که به ازای آن بردار v از 0.5 بزرگتر است |
|
|
پیدا کردن ستونهایی که به ازای آن بردار v از 0.5 بزرگتر است |
|
|
صفر کردن هر المانی که از 0.5 کمتر باشد |
|
|
صفر کردن هر المانی که از 0.5 کمتر باشد |
|
|
همه المانها را برابر با یک مقدار خاص قرار ده |
|
|
معادل مقداردهی متلب در پایتون (این مورد نیاز به تشریح نحوه مقدار دهی در پایتون دارد که در مقاله ای جداگانه بدان پرداخته خواهد شد.) |
|
|
معادل اسلایسینگ متلب در پایتون (این مورد نیاز به تشریح نحوه مقدار دهی در پایتون دارد که در مقاله ای جداگانه بدان پرداخته خواهد شد.) |
|
|
تبدیل آرایه به بردار |
|
|
ساخت یک بردار افزایشی |
|
|
ساخت یک بردار افزایشی |
|
|
ساخت یک بردار افزایشی ستونی |
|
|
ساخت یک آرایه دو بعدی ساخته شده از صفر (فلوتینگ پوینت 64 بیت) |
|
|
ساخت یک آرایه سه بعدی ساخته شده از صفر (فلوتینگ پوینت 64 بیت) |
|
|
ساخت یک آرایه دو بعدی ساخته شده از 1 (فلوتینگ پوینت 64 بیت) |
|
|
ساخت یک ماتریس که قطر آن برابر با یک است |
|
|
مقادیر قطر ماتریس |
|
|
ماتریسی مربعی که همه المان های آن صفر بوده، به جز قطر که برابر با v است |
rng(42,'twister') rand(3,4) |
from numpy.random import default_rng rng = default_rng(42) rng.random(3, 4) ورژن قدیمیتر: |
یک ماتریس 3 در 4 رندم با seed برابر با 42 |
|
|
چهار مقدار با فاصله گذاری برابر بین اعداد 1 و 3 |
|
|
ساخت مشگرید |
|
the best way to eval functions on a grid |
|
|
|
|
|
the best way to eval functions on a grid |
|
|
|
ساخت تکراری از ماتریس a به تعداد m در راستای سطر و n در راستای ستون |
|
|
چسباندن ماتریس b به سمت راست ماتریس a |
|
|
چسباندن ماتریس b به زیر ماتریس a |
|
|
تعیین مقدار بزرگترین المان آرایه a |
|
|
ماکزیمم هر ستون |
|
|
ماکزیمم هر سطر |
|
|
ماکزیمم بین دو مقدار |
|
|
L2 norm of vector |
|
|
عملگر and به صورت المان به المان |
|
|
عملگر or به صورت المان به المان |
|
|
اپراتور bitwise AND |
|
|
اپراتور bitwise OR |
|
|
معکوس یک آرایه دو بعدی |
|
|
شبه-معکوس یک آرایه 2 بعدی |
|
|
رنک ماتریس a |
|
a مربعی:
درغیر این صورت:
|
راه حل معادله a x = b برای x |
|
Solve |
راه حل معادله x a = b برای x |
|
|
singular value decomposition of |
|
|
Cholesky factorization یک آرایه 2 بعدی |
|
|
eigenvalues 𝜆 و eigenvectors 𝑣 آرایه |
|
|
eigenvalues 𝜆 و eigenvectors 𝑣 آرایه |
|
|
find the |
|
|
QR decomposition |
where |
where |
LU decomposition with partial pivoting (note: P(MATLAB) == transpose(P(NumPy))) |
|
|
conjugate gradients solver |
|
|
تبدیل فوریه a |
|
|
معکوس تبدیل فوریه a |
|
|
مرتب سازی المانهای ستون آرایه a |
|
|
مرتب سازی المانهای سطری آرایه a |
|
|
save the array |
|
|
رگرسیون خطی به فرم 𝑍𝑥=𝑦 |
|
|
downsample با فیلترینگ پایین گذر |
|
|
مقادیر منحصر به فرد در آرایه a |
|
|
remove singleton dimensions of array |
منبع
ثبت نظر:
وبسایت Vδ
ویدلتا، مجموعهای از مقالات، آموزشها و مباحث حوزه برق و برنامهنویسی. برای اطلاع از انتشار مقالات حتما در کانال تلگرام ما عضو شوید.
Channel ID: @vdelta_ir
آخرین مطالب
-
دوره طراحی سیستم اتصال زمین در شبکههای قدرت با محوریت محاسبات و شبیهسازیهای نرمافزاری
2 هفته قبل -
محاسبات ولتاژ گام و ولتاژ تماس با نرم افزار CYMGrd
2 هفته،2 روز قبل -
فرارسیدن سال یک هزار و چهارصد و چهار فرخنده باد!
1 ماه،2 هفته قبل -
بررسی عملکرد الکترودهای پیشنهادی مبحث 13 مقررات ملی ساختمان
2 ماه قبل -
اهمیت مطالعه خاک در بحث پتانسیل انتقالی در سیستمهای زمین - بخش 1
2 ماه،2 هفته قبل
درباره نویسنده
آرش صمدی
دانشجوی دکتری مهندسی برق قدرت و علاقهمند به مباحث حوزه برنامهنویسی کاربردی در صنعت برق. زمینههای تخصصی: حفاظت سیستمهای قدرت، ارتینگ و توسعه نرمافزارهای حوزه مهندسی برق
سایر مقالات درباره نویسنده