ورود

View Full Version : مشکل در numpy



arashsoft
پنج شنبه 14 تیر 1397, 22:33 عصر
با سلام و احترام
148503



1- آیا میشود sort جوری باشد که هر درایه به ترتیب از چپ به راست از کوچک به بزرگ مرتب شوند
یعنی شود


1 2
32 33



باتشکر

Arioun
سه شنبه 26 تیر 1397, 11:19 صبح
سلام دوست عزیز.
بله، میشه اینکارو کرد. ولی علاوه بر Sort باید از reshape هم استفاده بشه.
ببینید، ما می‌تونیم با تعیین axis آرایه رو در جهت سطرها یا ستون‌ها مرتب کنیم. مثلا axis=0 باعث میشه تا المنت‌های آرایه فقط در محور ستون مرتب بشن. یعنی از بالا به پایین و از پایین به بالا. مثال:
148554
می‌بینید که عدد 0 اومده بالا، ولی به سمت چپ نرفته.
اگر از axis=1 استفاده کنیم، 0 در سطر پایین می‌مونه، ولی میره به سمت چپ. یعنی مرتب‌سازی فقط در سطرها انجام میشه:

148555

در مسئله‌ای که مد نظر شما هست، هر دو نوع مرتب‌سازی لازم میشه. یعنی sort نباید محدود به سطرها یا ستون باشه. در این صورت، باید از axis=None استفاده کنید. None باعث میشه که آرایه شما flat بشه. برای اینکه بتونیم آرایه مرتب شده رو به شکل اولیه برگردونیم، اول باید shape آرایه رو در یک متغیر نگه داریم و بعد از sort کردن با axis=None اقدام به reshape آرایه بکنیم. من برای ذخیره shape آرایه اولیه از متغیر a_shape استفاده کردم.

148556

یک مثال دیگه با shape متفاوت می‌ذارم تا مسئله روشن‌تر بشه:
148557
امیدوارم توضیحاتم واضح بوده باشه.

در ضمن، من نمی‌دونستم کد ipython رو توی کدوم تگ بذارم، برای همین بصورت عکس گذاشتمش. پیشاپیش عذرخواهی می‌کنم از مدیران عزیز.