إعادة تشكيل الجدول لا تعني دائما نقل الصفوف إلى أعمدة. يمكن أن يتساوى شكل نتيجتين مع اختلاف مواقع القيم فيهما. نشرح الفرق بستة أعداد اخترناها، حتى يستطيع قارئ بيانات الذكاء الاصطناعي متابعة ما دخل كل صف بدلا من الاكتفاء بعد الأبعاد.
الخلاصة السريعة
لا؛ order=F يحدد ترتيب قراءة القيم ووضعها عند تغيير الشكل، أما نقل المحاور فيبدل مواضع المحاور نفسها.
- يحدد reshape ترتيب الفهرسة عند القراءة والكتابة معا؛ C يغير فهرس المحور الأخير أسرع، وF يغير الأول أسرع، دون أن يكون ذلك وصفا لتخطيط الذاكرة. [1]
- في جدولنا الصف الأول 4 و 8 و 12 ، والثاني 16 و 20 و 24. إعادة الشكل إلى ثلاثة صفوف وعمودين بترتيب C تعطي الصفوف: 4 مع 8 ؛ 12 مع 16 ؛ 20 مع 24.
- بترتيب F، تصبح الصفوف: 4 مع 20 ؛ 16 مع 12 ؛ 8 مع 24. أما نقل المحاور فيعطي: 4 مع 16 ؛ 8 مع 20 ؛ 12 مع 24.
- تساوي شكل النتائج لا يثبت تساوي معناها. احفظ تعريف كل محور وترتيب القراءة؛ المثال حساب مواقع يدوي، ولا يقيس نسخ البيانات أو سرعة مكتبة.
ماذا يختار order عند إعادة الشكل؟
توضح وثائق reshape أن الترتيب يستخدم لقراءة عناصر المدخل ثم لوضعها في الناتج. يتعلق C وF بترتيب الفهارس، وليس بتخطيط ذاكرة المصفوفة. [1]
نفترض صفين لحالتين وثلاثة أعمدة لثلاث ميزات. نريد ثلاثة صفوف وعمودين، ويبقى عدد القيم ستة. قبل التحويل نكتب ماذا سيمثل الشكل الجديد؛ القدرة على ترتيب ستة أعداد لا تثبت أن الصف الجديد حالة تعلم صحيحة.
سنختار ترتيبا واحدا للقراءة والوضع في كل مقارنة. لا نقرأ صفوفا ثم نملأ أعمدة ونسمي ذلك F دون متابعة الخطوتين.
كيف نسير مع ترتيب C؟
نعلن الصف الأول: 4 و 8 و 12 ؛ والصف الثاني: 16 و 20 و 24. نقرأ الأول كاملا ثم الثاني، فتكون القائمة 4 ثم 8 ثم 12 ثم 16 ثم 20 ثم 24. نضع أول قيمتين في الصف الأول الجديد، ثم التاليتين في الثاني، ثم الباقيتين في الثالث.
إذن الصفوف الجديدة هي 4 مع 8 ، ثم 12 مع 16 ، ثم 20 مع 24. لم نكرر رقما أو نحذف واحدا. لكن الصف الثاني الجديد جمع آخر قيمة من الحالة الأولى مع أول قيمة من الثانية؛ لهذا لا يجوز إبقاء وصف «حالة واحدة» لكل صف دون مبرر.
كيف يختلف F عن نقل المحاور؟
مع F نقرأ العمود الأول: 4 ثم 16 ، والثاني: 8 ثم 20 ، والثالث: 12 ثم 24. ونملأ العمود الأول الجديد بثلاث قيم: 4 و 16 و 8 ، ثم الثاني: 20 و 12 و 24. الناتج يختلف عن ترتيب C.
أما نقل المحاور في مثالنا فيجعل كل عمود أصلي صفا: 4 مع 16 ، ثم 8 مع 20 ، ثم 12 مع 24. الشكل هنا أيضا ثلاثة صفوف وعمودان، لكن القيم في الصفوف لا تطابق ناتج F. هذه مقارنة مواقع مؤلفة، وليست تشغيل دوال.
| الاختيار | الصف الأول | الصف الثاني | الصف الثالث |
|---|---|---|---|
| reshape مع C | الأول 4 ؛ الثاني 8 | الأول 12 ؛ الثاني 16 | الأول 20 ؛ الثاني 24 |
| reshape مع F | الأول 4 ؛ الثاني 20 | الأول 16 ؛ الثاني 12 | الأول 8 ؛ الثاني 24 |
| نقل المحاور | الأول 4 ؛ الثاني 16 | الأول 8 ؛ الثاني 20 | الأول 12 ؛ الثاني 24 |
ما الوصف الذي نحتفظ به؟
نقترح حفظ الشكل الأصلي والجديد وأسماء المحاور والترتيب المختار، مع قائمة قصيرة تبين موقع قيم معروفة. بذلك يمكن مراجعة ما إذا كان التحويل يجيب عن حاجة المهمة، بدلا من قبول كل جدول له عدد العناصر المطلوب.
لم نفحص مشاركة التخزين أو النسخ أو الزمن، ولم ندرب نموذجا. الذي أثبته مثالنا هو أن الشكل نفسه قد يخفي ترتيبات مختلفة. تعريف الصف والعمود في البيانات هو ما يجعل هذه الفروق قابلة للتفسير.
المصادر ومتابعة القراءة
- NumPy: reshape (يفتح في نافذة جديدة)numpy.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
