شکل‌دهی آرایه‌های NumPy

تغییر شکل آرایه

تغییر شکل به معنای تغییر شکل آرایه است.

شکل آرایه تعداد عناصر در هر بعد است.

با تغییر شکل، می‌توانیم ابعاد را اضافه یا حذف کنیم یا تعداد عناصر هر بعد را تغییر دهیم.

از یک بعدی به دو بعدی تغییر شکل دهید

مثال

یک آرایه یک بعدی با 12 عنصر را به آرایه دو بعدی تبدیل کنید.

ابعاد بیرونی دارای 4 آرایه خواهند بود که هر کدام شامل 3 عنصر:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)

مثال اجرا

از یک بعدی به سه بعدی تغییر شکل دهید

مثال

یک آرایه یک بعدی با 12 عنصر را به آرایه سه بعدی تبدیل کنید.

ابعاد بیرونی دارای 2 آرایه خواهند بود که هر کدام شامل 3 آرایه هستند، و هر آرایه شامل 2 عنصر:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)

مثال اجرا

آیا می‌توانیم به هر شکل تغییر شکل دهیم؟

بله، تنها در صورتی که عناصر مورد نیاز برای تغییر شکل در هر دو شکل یکسان باشند.

ما می‌توانیم یک آرایه یک بعدی با 8 عنصر را به 4 عنصر در یک آرایه دو بعدی با 2 ردیف تبدیل کنیم، اما نمی‌توانیم آن را به یک آرایه دو بعدی با 3 ردیف و 3 ستون تبدیل کنیم، زیرا این نیاز به 3x3 = 9 عنصر دارد.

مثال

تلاش برای تبدیل یک آرایه یک بعدی با 8 عنصر به یک آرایه دو بعدی با هر بعد دارای 3 عنصر (که خطا ایجاد خواهد کرد):

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)

مثال اجرا

آیا بازگشتی یک کپی یا نمای است؟

مثال

مطالعه کنید که آیا آرایه بازگشتی یک کپی یا یک نمای است:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)

مثال اجرا

مثال بالا آرایه اصلی را بازمی‌گرداند، بنابراین آن یک نماینده است.}

ابعاد ناشناخته

شما می‌توانید از یک بعد "ناخوانده" استفاده کنید.

این به معنای آن است که شما نیازی به指定 عدد دقیق برای یکی از ابعاد در روش reshape ندارید.

پاسخ به -1 به عنوان ارزش، NumPy برای شما این عدد را محاسبه خواهد کرد.

مثال

تبدیل آرایه یک بعدی 8 عناصر به آرایه سه بعدی 2x2 عناصر:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)

مثال اجرا

توجه:ما نمی‌توانیم -1 به یک بعد بیشتر از یک بعد.

پیکربندی آرایه‌ها

پیکربندی آرایه‌ها (Flattening the arrays) به معنای تبدیل آرایه چند بعدی به آرایه یک بعدی است.

ما می‌توانیم از reshape(-1) برای انجام این کار.

مثال

تغییر شکل آرایه را به آرایه یک بعدی تبدیل کنید:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

مثال اجرا

توجه:کلیک‌های زیادی وجود دارد که می‌توانید شکل پیکربندی arr.flatten،ravel را تغییر دهید و همچنین می‌توانید عناصر را تغییر دهید rot90،flip،fliplr،flipud و غیره. این‌ها بخش‌های میانی تا پیشرفته‌ی numpy هستند.