إعادة تشكيل صفيف NumPy
إعادة تشكيل المصفوفات
إعادة التشكيل تعني تغيير شكل المصفوفة.
شكل المصفوفة هو عدد العناصر في كل بُعد.
من خلال إعادة التشكيل ، يمكننا إضافة أبعاد أو إزالتها أو تغيير عدد العناصر في كل بُعد.
إعادة التشكيل من 1-D إلى 2-D
مثال
قم بتحويل المصفوفة 1-D التالية المكونة من 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)
إعادة التشكيل من 1-D إلى 3-D
مثال
قم بتحويل المصفوفة 1-D التالية المكونة من 12 عنصرًا إلى مصفوفة ثلاثية الأبعاد.
سيحتوي البعد الخارجي على صفيفتين تحتويان على 3 مصفوفتين ، كل منهما يحتوي على عنصرين:
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 عناصر 1D إلى 4 عناصر في صفين 2D مصفوفة ولكن لا يمكننا إعادة تشكيلها في 3 عناصر 3 صفوف 2D مصفوفة لأن ذلك يتطلب 3x3 = 9 عناصر.
مثال
حاول تحويل مصفوفة 1D ذات 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)
يُرجع المثال أعلاه المصفوفة الأصلية ، لذا فهي طريقة عرض.
البعد غير معروف
يُسمح لك بالحصول على بُعد واحد "غير معروف".
بمعنى أنه لا يتعين عليك تحديد رقم دقيق لأحد الأبعاد في طريقة إعادة التشكيل.
-1
قم بالتمرير كقيمة ، وسيقوم NumPy بحساب هذا الرقم نيابة عنك .
مثال
تحويل مصفوفة 1D ذات 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
إلى أكثر من بعد واحد.
تسطيح المصفوفات
مصفوفة التسوية تعني تحويل مصفوفة متعددة الأبعاد إلى مصفوفة أحادية الأبعاد.
يمكننا استخدامها reshape(-1)
للقيام بذلك.
مثال
قم بتحويل المصفوفة إلى صفيف أحادي الأبعاد:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
ملاحظة: هناك الكثير من الوظائف لتغيير أشكال المصفوفات في numpy flatten
، ravel
وأيضًا لإعادة ترتيب العناصر rot90
، flip
وما إلى ذلك fliplr
. flipud
تقع هذه الوظائف ضمن قسم متوسط إلى متقدم من numpy.