الدالة numpy.reshape() متاحة في حزمة NumPy. وكما يوحي الاسم، فإن إعادة التشكيل تعني 'التغييرات في الشكل'. تساعدنا الدالة numpy.reshape() في الحصول على شكل جديد للمصفوفة دون تغيير بياناتها.
في بعض الأحيان، نحتاج إلى إعادة تشكيل البيانات من واسعة إلى طويلة. لذلك في هذه الحالة، يتعين علينا إعادة تشكيل المصفوفة باستخدام وظيفة reshape().
بناء الجملة
numpy.reshape(arr, new_shape, order='C')
حدود
هناك المعلمات التالية لوظيفة reshape ():
1) آر: array_like
هذا هو ندارراي. هذه هي المصفوفة المصدرية التي نريد إعادة تشكيلها. هذه المعلمة ضرورية وتلعب دورًا حيويًا في الدالة numpy.reshape().
سلسلة.سلسلة فرعية جافا
2) new_shape: int أو مجموعة من ints
يجب أن يكون الشكل الذي نريد تحويل المصفوفة الأصلية إليه متوافقًا مع المصفوفة الأصلية. إذا كان عددًا صحيحًا، فستكون النتيجة مصفوفة أحادية الأبعاد بهذا الطول. يمكن أن يكون بُعد الشكل الواحد -1. هنا، يتم تقريب القيمة بطول المصفوفة والأبعاد المتبقية.
3) الترتيب: {'C'، 'F'، 'A'}، اختياري
تلعب معلمة ترتيب الفهارس هذه دورًا حاسمًا في وظيفة reshape (). تُستخدم أوامر الفهرس هذه لقراءة عناصر المصفوفة المصدر ووضع العناصر في المصفوفة المُعاد تشكيلها باستخدام ترتيب الفهرس هذا.
- ترتيب الفهرس 'C' يعني قراءة/كتابة العناصر التي تستخدم ترتيب فهرس يشبه C حيث يتغير فهرس المحور الأخير بشكل أسرع، ويعود إلى فهرس المحور الأول الذي يتغير بشكل أبطأ.
- ترتيب الفهرس 'F' يعني قراءة/كتابة العناصر التي تستخدم ترتيب الفهرس الشبيه بفورتران، حيث يتغير فهرس المحور الأخير بشكل أبطأ ويتغير فهرس المحور الأول بشكل أسرع.
- لا يأخذ الترتيبان 'C' و'F' أي قدر من تخطيط الذاكرة للمصفوفة الأساسية ويشيران فقط إلى ترتيب الفهرسة.
- ترتيب الفهرس 'A' يعني قراءة/كتابة العناصر بترتيب فهرس يشبه Fortran، عندما يكون arr متجاورًا في الذاكرة، وإلا استخدم ترتيبًا يشبه C.
عائدات
تقوم هذه الدالة بإرجاع ndarray. وهو كائن عرض جديد إذا كان ذلك ممكناً؛ وإلا فإنه سيكون نسخة. ليس هناك ضمان لتخطيط الذاكرة للمصفوفة التي تم إرجاعها.
مثال 1: ترتيب الفهرس بطريقة تشبه لغة C
import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y
انتاج:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
في الكود أعلاه
- لقد قمنا باستيراد numpy بالاسم المستعار np.
- لقد أنشأنا مصفوفة 'a' باستخدام الدالة np.arrange().
- لقد أعلنا عن المتغير 'y' وقمنا بتعيين القيمة التي تم إرجاعها للدالة np.reshape().
- لقد مررنا المصفوفة 'x' والشكل الموجود في الوظيفة.
- وأخيرًا، حاولنا طباعة قيمة arr.
في الإخراج، تم تمثيل المصفوفة بثلاثة صفوف وأربعة أعمدة.
مثال 2: يعادل C ravel ثم C reshape
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y
يتم استخدام الدالة ravel() لإنشاء مصفوفة مسطحة متجاورة. يتم إرجاع مصفوفة أحادية البعد تحتوي على عناصر الإدخال. يتم عمل نسخة فقط عند الحاجة إليها.
فئة مجردة
انتاج:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
مثال 3: ترتيب الفهرس بطريقة تشبه فورتران
import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order='F') x y
انتاج:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]])
في الكود أعلاه
- لقد قمنا باستيراد numpy بالاسم المستعار np.
- لقد أنشأنا مصفوفة 'a' باستخدام الدالة np.arrange().
- لقد أعلنا عن المتغير 'y' وقمنا بتعيين القيمة المعادة للدالة np.reshape().
- لقد مررنا المصفوفة 'x' والشكل وترتيب الفهرس المشابه لـ Fortran في الوظيفة.
- وأخيرًا، حاولنا طباعة قيمة arr.
في الإخراج، تم تمثيل المصفوفة كأربعة صفوف وثلاثة أعمدة.
مثال 4: ترتيب الفهرس بطريقة تشبه فورتران
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F') x y
انتاج:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]])
مثال 5: تم استنتاج القيمة غير المحددة لتكون 2
import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y
في الكود أعلاه
- لقد قمنا باستيراد numpy بالاسم المستعار np.
- لقد أنشأنا مصفوفة 'a' باستخدام الدالة np.arrange().
- لقد أعلنا عن المتغير 'y' وقمنا بتعيين القيمة التي تم إرجاعها للدالة np.reshape().
- لقد مررنا المصفوفة 'x' والشكل (قيمة غير محددة) في الوظيفة.
- وأخيرًا، حاولنا طباعة قيمة arr.
في الإخراج، تم تمثيل المصفوفة كصفين وخمسة أعمدة.
انتاج:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]])