آشنایی با تابع reshape

تابع reshape در numpy3 دقیقه مطالعه

هدیه فنولوژی به شما!

Reshape یک آرایه به معنای تغییر shape آن است. فرم یک آرایه در حقیقت تعداد عناصر موجود در هر بعد و بعد آرایه را مشخص می‌کند. با reshape می‌توان تعداد بعدهای یک آرایه یا تعداد عناصر موجود در هر بعد را تغییر داد.

تغییر آرایه یک بعدی به دو بعدی در numpy

در قطعه کد زیر، یک آرایه یک بعدی را به آرایه دو بعدی تبدیل کرده‌ایم. آرایه دو بعدی ما شامل ۴ آرایه یک بعدی است که هر کدام ۳ درایه دارند؛ بنابراین این آرایه در مجموع ۱۲ عنصر اسکالر دارد.

تغییر آرایه یک بعدی به سه بعدی در numpy

در قطعه کد زیر، یک آرایه یک بعدی را به آرایه سه بعدی تبدیل کرده‌‌ایم. آرایه سه بعدی ما شامل ۲ آرایه دو بعدی است. هر یک از این آرایه‌‌های دو بعدی، سه آرایه‌‌ی یک بعدی دارند؛ هر یک از آرایه‌‌های یک بعدی نیز ۲ عنصر دارند. بنابراین این آرایه نیز در مجموع ۱۲ عنصر اسکالر دارد.

آیا در numpy، انجام reshape هر از هر بعد به هر بعدی امکان‌‌‌پذیر است؟

اگر تعداد عناصر اسکالر موجود در هر دو آرایه یکسان باشد، تبدیل بعد امکان‌‌‌پذیر است. به عنوان مثال اگر یک آرایه با ۱۲ عنصر داشته باشیم، می‌‌‌توان آن را به آرایه‌‌‌هایی با فرم (۳,۴) یا (۲,۲,۳) تبدیل کرد، زیرا ضرب عناصر آن‌‌‌ها ۱۲ می‌‌‌شود؛ اما این آرایه را نمی‌‌‌توان به آرایه‌‌‌ای با فرم (۵,۳) تبدیل کرد؛ زیرا تعداد عناصر اسکالر موجود در این آرایه، ۱۵تاست. به عنوان مثالی دیگر، کد زیر را اجرا کنید؛ این کد به خطا منجر خواهد شد.

تبدیل فرم (reshape) آرایه، یک copy ایجاد می‌‌‌‌کند یا یک view؟

برای فهمیدن این موضوع می‌‌‌‌توانید کد زیر را اجرا کنید:

مشاهده می‌‌‌‌‌کنید که یک view ایجاد می‌‌‌‌‌شود نه یک copy؛ یعنی اگر در آرایه جدید تغییری ایجاد کنید، در آرایه اصلی نیز تغییر ایجاد می‌‌‌‌‌شود.

آموزش numpy

آیا می‌‌‌‌‌توان در تغییر فرم (reshape) آرایه numpy، از بعد نامعلوم استفاده کرد؟

بله. با استفاده از تابع reshape می‌‌‌‌‌توان یکی از بعدها را نامعلوم فرض کرد تا رایانه یک مقدار درست برای آن بعد در نظر بگیرد. برای انجام این کار باید عدد ۱- را به عنوان ورودی به reshape دهید. به مثال زیر توجه کنید تا موضوع روشن شود:

توجه کنید که تنها یکی از آرگومان‌‌‌‌‌‌های reshape را می‌‌‌‌‌‌توان ۱- در نظر گرفت.

مسطح کردن آرایه نامپای با استفاده از rshape

در قطعه کد زیر، یک آرایه با بعد دلخواه را به صورت آرایه یک بعدی درآورده‌‌‌‌‌‌ایم. به این کار مسطح‌‌‌‌‌‌سازی (flattening) آرایه می‌‌‌‌‌‌گوییم:

برای تغییر فرم و تغییر چیدمان اعضای آرایه در numpy، توابع زیاد دیگری نیز وجود دارند که در صورت نیاز می‌‌‌‌‌‌‌توان از آن‌‌‌‌‌‌‌ها استفاده کرد. برخی از این توابع عبارتند از:

  • Flatten
  • Ravel
  • Rot90
  • Flip
  • Fliplr
  • Flipud
تیم محتوایی فنولوژی
تیم محتوایی فنولوژی
گروهی از متخصصان حوزه‌های مختلف
عضویت
اطلاع از
2 دیدگاه‌ها
قدیمی‌ترین‌ها
جدیدترین‌ها
بازخورد در متن
دیدن همه دیدگاه‌ها

ببخشید بقیه توابع باید یاد گرفت یا همین reshape کابردش با بقیو توابع مثل Flatten
Ravel
Rot90
Flip
Fliplr
Flipud
یکی هست ؟؟؟ مرسی ازتون

سلام و وقت بخیر
خیر یکسان نیستند. هر کدام از این توابع، بسته به نوع کاربردی که مد نظرتون هست، ممکن است آن کار را راحت‌تر یا سخت‌تر انجام بدن. انجام برخی کارها به وسیله این توابع نیز ممکن نیست. سعی میکنیم حتما این مقاله رو کامل کنیم و بقیه کاربردها رو هم بررسی کنیم.

فنولوژی را در شبکه‌های اجتماعی دنبال کنید

©۲۰۲۰ – کلیه حقوق مادی و معنوی متعلق به فنولوژی است.