تابع reshape برای تغییر شکل و ابعاد یک آرایه در numpy پایتون مورد استفاده قرار میگیرد! که در این آموزش با مثال و تمرین و به صورت کامل در مورد آن صحبت خواهیم کرد!
import numpy as np a=np.arange(1,9) b=a.reshape(2,4) print(b)
در خط 1 که پکیج numpy رو با اسم مستعار np وارد برنامه کردیم! (حالا چرا با اسم مستعار؟! مگه اسم خودش چِشه؟! اسم خودش طولانی است! واسه همین از اسم مستعار استفاده کردیم!)
در خط دوم، یک متغیر a تعریف کردیم که در واقعه آرایهای شامل اعداد 1 تا 8 است! (در صورت نیاز به آموزش تابع arange در numpy مراجعه کنید!)
در خط 3 اومدیم همون a رو تغییر شکل میدیم! [reshape یعنی تغییر شکل دادن!] پس در خط 3، همون a رو میایم تغییر شکل میدیم به یک آرایه 2 در 4 ! و این آرایه تغییر شکل یافته رو در قالب متغیر b ذخیره میکنیم!
و در خط 4 هم میایم همون b رو پرینت میکنیم! که خروجی میشه:!
[[1 2 3 4] [5 6 7 8]]
import numpy as np a=np.ones( (3,6) ).reshape(2,9) print(a)
خب! خط 1 که مثل قبلی است!
در خط 2، اول از همه با تابع ones در numpy میایم یک یک آرایه 3 دذ 6 درست میکنیم که همه درایههاش عدد 1 است! (اگر دوست دارید در مورد این تابع بیشتر بدونید، به همون لینکی که با رنگ آبی هم مشخص کردیم، مراجعه کنید!)
پس تا اینجا یک آرایه 3 در 6 شامل 1 درست کردیم! یعنی چیزی شبیه این چیزی که پایین آوردیم!
[[1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.]]
خب حالا دوست داریم، همین چیزی که در بالا میبینید و 18 عدد یک داخل خودش داره رو بیایم به یک آرایه 2 در 9 تبدیل کنیم! برای همین باز در ادامه اون دستور ones یک نقطه گذاشتیم و از تابع reshape استفاده کردیم تا بیاد این آرایه رو به یک آرایه 2 در 9 تغییر شکل بده! و در خط آخر هم همون a رو چاپ میکنیم! که خروجیش به صورت زیر میشه!
[[1. 1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1. 1.]]
شاید بگید، نمیشد این کارهایی که توی مثال 2 کردیم رو با کد زیر انجام بدیم؟!
import numpy as np a=np.ones( (3,6) ) b=a.reshape(2,9) print(b)
جواب اینه که چرا میشه! و هیچ مشکلی هم نداره و کاملاً هم درسته! ولی اون اولی باکلاستره! و ایضاً شاختره! همه رو توی یک خط نوشتیم! همین! تنها فرقش همینه واقعاً!
هر چند که این نکته ای که میخوام بگم، واضحه ولی فقط برای تذکر میگم! مثلاً فرض کنید آرایه شما 3 در 6 است! خب این آرایه چندتا مولفه داره؟! [باید جواب بدید 18 تا !]
حالا به نظرتون 18 تا مولفه رو میشه در قالب یک آرایه 2 در 10 جا داد؟! [قطعاً خیر! چون آرایه 2 در 10، بیست تا مولفه میخواد، ولی ما 18 تا مولفه داریم!]
یا به نظرتون میشه این 18 مولفه رو داخل یک آرایه 2 در 4 جا داد؟! باز هم خیر! چون آرایه 2 در 4 کلاً 8 مولفه بیشتر نمیخواد! چجوری میخواین 18 مولفه رو تووش بزووور بچپووونید؟! پس نمیشه قطعاً!
کل تذکر این قسمت این بود که درسته تابعی هست به اسم reshape که تغییر شکل میده! اما توقع معقول داشته باشید! و به ابعاد و شکلها و تعداد مولفه ها دقت بکنید که اصلاً اون چیزی که از numpy بنده خدا میخواید منطقی باشه!!
در آموزش بعدی، دوتا از reshape های خیلی خوف و خفن معروف و پرتکرار و شاید یکم عجیب غریب رو بررسی میکنیم! که شدیداً هم در علم داده کاربرد دارن! پس با ما همراه باشید!
تعداد دیدگاه | 0 |
تعداد بازدید | 7.2K |
تاریخ انتشار | 29/07/2019 |
تاریخ بروزرسانی | 29/07/2019 |
نویسنده | گروه آموزشی کولاک |