به طور خیلی خلاصه تابع nonzero از پکیج numpy پایتون میاد اندیس عناصر غیر صفر یک آرایه رو بهمووون تحویل میده! در این آموزش به طور کامل و با مثال به توضیح عملکرد این تابع میپردازیم!
خب بذارید یک مثال بزنم! تصویر زیر رو در نظر بگیرید! یه آرایه دو بعدی است که دو تا از اعدادش غیر صفر هستن! (یکی همون عدد 1 و یکی هم عدد 4)!
میخوام یه سوال ازتون بپرسم! اما قبلش یه نکته رو باید یادآوری کنم! و اون اینکه پایتون اندیسگذاریش رو از “صفر” شروع میکنه!
همینطور که در تصویر بالا هم میبینید ما شماره گذاری سطرها و ستونها رو [به همین دلیل] از صفر شروع کردیم!
حالا سوالم اینه: میشه بگید کدوم دِرایههای این آرایه دو بعدی غیر صفر است؟!
بله درست گفتید، چون توی عکس نوشتیم!!!
حالا بیاید همین آرایه رو در پایتون بنویسیم!
import numpy as np a = np.array([ [1, 0], [0, 4] ])
اگر الان خوف کردید که این چیه که نوشتیم، یعنی پیشنیازهای این آموزش رو طِی نکردید و خیلی عجلهای اومدید توی این آموزش! لطفاً قبلش آموزش زیر رو نگاه کنید!
اما به طور خلاصه: در خط اول پکیج numpy رو با نام مستعار np وارد برنامه کردیم!
در خط دوم تا پنجم هم اومدیم همون آرایه خودمون رو تعریف کردیم! و صرفاً برای خوشگلی یه تعریف آرایه رو از خط 2 تا 5 طوووووول دادیم! وگرنه توی یک خط هم میشد نوشت، ولی ما هِی رفتیم خط بعد و .. تا خوشگل و تر و تمیز باشه! همین!
ولی تاکید میکنم اگر متوجه نمیشید کد بالا چجوری کار میکنه، باید به آموزشی که لینکش رو براتون گذاشتم مراجعه کنید!
اصل کار اینه که بیایم به پایتون بگیم که python عزیز، لطفاً محبت کن اندیس عناصر غیرصفر این آرایه رو به ما بده!
برای اینکار باید بنویسیم:
print( np.nonzero(a) )
در اینجا هم داریم میگیم پرینت کن (یعنی چاپ کن) عناصر غیرصفرِ آرایه a رو!
قطعاً میدونید که در زبان انگیسی zero یعنی صفر و nonzero یعنی غیرصفر!
اون np هم که نام مستعار پکیج numpy بود! یعنی بهش میگیم برو از تابع nonzero که در پکیج numpy است استفاده کن!
اگر دارید میپرسید که نام مستعار چیه و از این جور سوالا! یعنی باید اون مطلب پیشنیاز رو اول مشاهده کنید، بعد دوباره بیاید اینجا!
خروجی این قطعه کدی که نوشتیم میشه [با تصویر گذاشتم که کاملاً متوجه بشید]:
خب! همینطور که میبینید پایتون برای اینکه بگه کدوم اندیسهای آرایه غیر صفر هستن:
اول میگه: سطرهای دارای اندیس غیرصفر عبارتاند از: 0 و 1 !
و بعد میگه: ستونهای دارای اندیس غیرصفر عبارتاند از: 0 و 1 !
که شما اگر دِرایه عناصر غیر صفر رو بخواید، باید مثل تصویر بالا، اعداد رو توی ذهنتون متناظر کنید و از این شکلهایی که در تصویر بالا کشیدیم، توی ذهن خودتون بکشید تا متوجه بشید!
در راستای کامل فهمیدن این مبحث، یه تمرین هم بهتون میدم و بعد هم والسّلام!
قطعه کد زیر رو در نظر بگیرید!
import numpy as np x = np.array([ [3, 0, 0], [0, 4, 0], [5, 6, 0] ]) print( np.nonzero(x) )
بفرمایید خروجی این بنده خدا چی میشه؟!
لطفاً از پایین تقلب نکنید و خودتون حل کنید! بعد جوابتون رو با پاسخ مقایسه کنید!
نصیحت برادرانه! لطفاً نگید خب بیخیال سریع بریم پاسخ رو ببینیم! چون بیفایدس، لطفاً قبلش خودتون حتماً این تمرین رو حل کنید و سعی کنید خروجیش رو حدس بزنید، بعد بیاید جواب ما رو بخونید!
این ماتریسی که نوشتیم 4 تا عنصر غیر صفر داره! که من در زیر درایههای مربوطه رو لیست میکنم!
برای اینکه جلواتر بتونیم با خروجی پایتون اینها رو مطابقت بدیم، اومدم رنگیشووون کردم اینا رو!
میدونیم که پایتون این شکلی به ما خروجی نمیده! یه جور دیگه خروجی میده! و خروجیش عبارت است از:
(array([0, 1, 2, 2], dtype=int64), array([0, 1, 0, 1], dtype=int64))
بازهم برای فهم هرچه بهتر اومدم خروجیها رو رنگی کردم!
مثلاً اون قرمزها که 0 و 0 رو قرمز کردم، یعنی درایه 0 و 0 !
یا 1 و 1 رو آبی کردم، یعنی درایه 1 و 1 !
یا مثلاً 2 و 0 رو صورتی کردم، یعنی درایه 2 و 0 !
و اون 2 و 1 رو هم سبز کردم که یعنی درایه 2 و 1 !
واسّلام!
تعداد دیدگاه | 0 |
تعداد بازدید | 3.0K |
تاریخ انتشار | 28/10/2019 |
تاریخ بروزرسانی | 28/10/2019 |
نویسنده | گروه آموزشی کولاک |