از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه مسطح کردن ابعاد خاص آرایه NumPy
سرفصلهای مطلب
معرفی
در دستکاری داده ها و محاسبات علمی، NumPy به عنوان یکی از پرکاربردترین کتابخانه ها می باشد، زیرا عملکردهای بسیار کمی را ارائه می دهد. یکی از این عملیات، “مسطح کردن” به تبدیل آرایه های چند بعدی به دنباله ای تک بعدی کمک می کند. در حالی که مسطح کردن کل یک آرایه بسیار ساده است، مواقعی وجود دارد که ممکن است بخواهید به طور انتخابی ابعاد خاصی را برای مطابقت با الزامات خط لوله داده یا الگوریتم خود صاف کنید. در این بایت، تکنیکهای مختلفی را برای دستیابی به این شکل ظریفتر از صاف کردن خواهیم دید.
آرایه های NumPy
NumPy مخفف Numerical Python، کتابخانه ای در پایتون است که از آرایه ها و ماتریس های بزرگ و چند بعدی به همراه مجموعه ای از توابع ریاضی برای کار بر روی این آرایه ها پشتیبانی می کند. آرایه های NumPy یک عنصر کلیدی در محاسبات علمی با پایتون هستند. آنها در مقایسه با نوع داده فهرست داخلی پایتون، کارآمدتر و سریعتر هستند، به خصوص در مورد عملیات ریاضی.
این کد نشان می دهد که یک آرایه NumPy چگونه می تواند باشد:
import numpy as np
array_2D = np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))
print(array_2D)
خروجی:
((1 2 3)
(4 5 6)
(7 8 9))
چرا برخی از ابعاد یک آرایه NumPy را صاف کنیم؟
صاف کردن یک آرایه به معنای تبدیل یک آرایه چند بعدی به یک آرایه 1 بعدی است. اما چرا می خواهید فقط برخی از ابعاد یک آرایه NumPy را صاف کنید؟
خوب، سناریوهای زیادی وجود دارد که ممکن است لازم باشد این کار را انجام دهید. به عنوان مثال، در یادگیری ماشین، اغلب ما نیاز داریم که داده های ورودی خود را قبل از وارد کردن آنها به یک مدل، صاف کنیم. این به این دلیل است که بسیاری از الگوریتمهای یادگیری ماشین، دادههای ورودی را در قالبی خاص، معمولاً به صورت یک آرایه 1 بعدی، انتظار دارند.
اما گاهی اوقات، ممکن است نخواهید کل آرایه را صاف کنید. در عوض، ممکن است بخواهید ابعاد خاصی از آرایه را مسطح کنید و در عین حال سایر ابعاد را دست نخورده نگه دارید. این می تواند در سناریوهایی مفید باشد که می خواهید سطحی از ساختار اصلی داده ها را حفظ کنید.
چگونه یک آرایه NumPy را صاف کنیم
صاف کردن یک آرایه NumPy نسبتاً آسان است. می توانید استفاده کنید flatten()
روش ارائه شده توسط NumPy برای مسطح کردن یک آرایه:
import numpy as np
array_2D = np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))
flattened_array = array_2D.flatten()
print(flattened_array)
خروجی:
(1 2 3 4 5 6 7 8 9)
همانطور که می بینید، flatten()
روش آرایه دو بعدی ما را به آرایه 1 بعدی تبدیل کرده است.
اما اگر بخواهیم فقط یک بعد خاص از آرایه را مسطح کنیم و نه کل آرایه را چه کنیم؟ در بخشهای بعدی به بررسی این موضوع میپردازیم.
مسطح کردن ابعاد خاص یک آرایه NumPy
صاف کردن یک آرایه NumPy کاملاً ساده است. اما، اگر بخواهید فقط ابعاد خاصی از یک آرایه را صاف کنید، چه؟ اینجاست که reshape
تابع وارد عمل می شود.
فرض کنید یک آرایه سه بعدی داریم و میخواهیم دو بعد آخر را صاف کنیم و بعد اول را همانطور که هست نگه داریم. را reshape
برای رسیدن به این هدف می توان از تابع استفاده کرد. در اینجا یک مثال ساده آورده شده است:
import numpy as np
array_3d = np.array((((1, 2, 3), (4, 5, 6)), ((7, 8, 9), (10, 11, 12))))
flattened_array = array_3d.reshape(array_3d.shape(0), -1)
print(flattened_array)
خروجی:
(( 1 2 3 4 5 6)
( 7 8 9 10 11 12))
در کد بالا، -1
در reshape
تابع نشان می دهد که اندازه آن بعد باید به طور خودکار محاسبه شود. این بر اساس اندازه آرایه و اندازه ابعاد دیگر است.
توجه داشته باشید: را reshape
تابع آرایه اصلی را تغییر نمی دهد. در عوض، آرایه جدیدی را برمی گرداند که شکل مشخص شده را دارد.
راه حل ها و موارد استفاده مشابه
مسطح کردن ابعاد خاص آرایه NumPy تنها راه برای دستکاری داده های شما نیست. راه حل های مشابه دیگری وجود دارد که ممکن است برای شما مفید باشد. به عنوان مثال ravel
تابع همچنین می تواند برای مسطح کردن یک آرایه استفاده شود. با این حال، بر خلاف reshape
، ravel
همیشه یک آرایه مسطح را برمی گرداند.
علاوه بر این، می توانید از transpose
تابع تغییر ترتیب ابعاد آرایه است. این می تواند در مواردی مفید باشد که باید داده های خود را برای عملیات یا تجسم های خاص مرتب کنید.
این تکنیک ها می توانند به ویژه در پیش پردازش داده ها برای یادگیری ماشین مفید باشند. به عنوان مثال، ممکن است لازم باشد داده های ورودی یک شبکه عصبی را صاف کنید. یا، ممکن است لازم باشد دادههای خود را جابهجا کنید تا مطمئن شوید که در قالب صحیح برای یک کتابخانه یا تابع ریاضی خاص هستند.
نتیجه
در این بایت، نحوه مسطح کردن ابعاد خاص یک آرایه NumPy را با استفاده از reshape
تابع. ما همچنین راه حل های مشابهی مانند ravel
و transpose
و برخی موارد استفاده را مورد بحث قرار داد که این تکنیک ها می توانند به ویژه مفید باشند.
در حالی که این تکنیکها ابزارهای قدرتمندی برای دستکاری دادهها هستند، اما در مورد کارهایی که میتوانید با NumPy انجام دهید، فقط نوک کوه یخ هستند. بنابراین من پیشنهاد می کنم نگاهی عمیق تر به آن بیندازید اسناد NumPy و ببینید چه ویژگی های جالب دیگری را می توانید کشف کنید.
منتشر شده در 1402-12-26 16:26:15