NumPy Array Reshaping
بازآرایی آرایهها
منظور از بازآرایی آرایهها، تغییر آرایش یک آرایه است. با استفاده از بازآرایی آرایهها میتوان ابعاد یک آرایه را حذف و یا به آن بیافزاییم و همچنین میتوان تعداد عناصر موجود در هر بعد را تغییر داد.
بازآرایی یک آرایه یک بعدی به یک آرایه دو بعدی
در کد زیر یک آرایه یک بعدی با ۱۲ عنصر را به یک آرایه دو بعدی ۴ در ۳ (بیرونیترین لایه دارای ۴ آرایه که هر یک دارای ۳ عنصر هستند) تبدیل کردهایم.
بازآرایی یک آرایه یک بعدی به یک آرایه سه بعدی
در کد زیر یک آرایه یک بعدی با ۱۲ عنصر را به یک آرایه سه بعدی ۲ در ۳ در ۲ (بیرونیترین لایه دارای ۲ آرایه که هر یک دارای ۳ آرایه که هر یک دارای ۲ عنصر هستند) تبدیل کردهایم.
آیا مجازیم آرایه را به هر آرایش دلخواهی بازآرایی کنیم؟
بله به شرط آنکه تعداد عناصر موجود در هر دو آرایش با هم برابر باشند.
مثلا میتوان یک آرایه یک بعدی با ۸ عنصر را به یک آرایه دو بعدی ۴ در ۲ تبدیل کرد زیرا در هر دو ۸ عنصر وجود دارد ولی نمیتوان آن را به یک آرایه ۳ در ۳ تبدیل کرد زیرا در این صورت به ۹ عنصر نیازمندیم در حالیکه تعداد عناصر موجود ۸ عنصر است.
چنانکه ملاحظه میکنید کد زیر به دلیل اینکه میخواهد یک آرایه با ۸ عنصر را به یک آرایه با ۹ عنصر بازآرایی کند با خطا مواجه شده است.
بعد مجهول
اجازه داریم که یک بعد مجهول داشته باشیم. به این معنی که لازم نیست تعداد عناصر دقیق مربوط به آن بعد را در دستور reshape
وارد کنیم.
برای بعد مجهول عدد -1
را وارد و NumPy آن را برای شما محاسبه میکند.
فلت کردن آرایهها
فلت کردن (flattening) به این معنی است که آرایه چند بعدی را به آرایه یک بعدی تبدیل کنیم. یکی از راههای انجام این کار استفاده از دستور reshape(-1)
است.
flatten
،ravel
و همچنین توابعی نظیر rot90
،flip
،fliplr
،flipud
و ...