flip يعكس ترتيب العناصر ويحفظ الشكل؛ حذف axis يقلب جميع المحاور. [1] لذلك نحدد ما يمثله كل محور قبل اختيار القلب.
حدد مواضع الأعمدة والصفوف
flip يعكس ترتيب العناصر على المحور المختار مع بقاء شكل المصفوفة. [1]
نؤلف A=[[2,-5,9],[7,0,4]]. صفان وثلاثة أعمدة، وأعداد بلا وحدات. نرقم الصفين 0 و1، والأعمدة 0 و1 و2، ونقرأ أعداد كل صف من اليسار إلى اليمين. لا تمثل القيم قياسًا لصورة أو نتيجة نموذج.
لقلب الأعمدة داخل كل صف، نأخذ صفه من آخر عمود إلى الأول. الصف الأول يصير [9,-5,2]، والثاني [4,0,7]. لذلك الناتج [[9,-5,2],[4,0,7]]. بقي كل عدد في صفه الأصلي.
لقلب الصفوف، نضع الصف الثاني أولًا ثم الأول، دون عكس العناصر داخل الصف. الناتج [[7,0,4],[2,-5,9]]. إذن كلمة «قلب» وحدها لا تخبرنا أي ترتيب تغير.
نشتق قاعدة فهرسة مستقلة: لمحور طوله L موجب، موضع الناتج j يأخذ القديم عند L−1−j إذا قلبنا هذا المحور، وعند j إذا تركناه. محور الأعمدة في A طوله 3: الموضع 0 يأخذ القديم 2، والموضع 1 يأخذ القديم 1، والموضع 2 يأخذ القديم 0.
القيمة −5 بقيت −5 بعد قلب الأعمدة. العملية غيّرت موقعها النسبي بين طرفي الصف، ولم تضرب الأعداد في −1. بقاء القيمة الوسطى في موضعها لا يعني أن بقية الصف بقيت في ترتيبها.
راجع ما يحدث عند حذف المحور
الافتراضي axis=None يقلب جميع المحاور؛ الفهرس السالب يعد المحاور بدءًا من الأخير، ويمكن تحديد عدة محاور معًا. [1]
نضيف B=[[12,3,-8],[6,11,1]]، ونرتب C=[A,B] ذات الشكل (2,2,3). المحور 0 يختار الجدول، والمحور 1 يختار الصف داخله، والمحور 2 يختار العمود. بهذا التعريف، axis=-1 يعني الأعمدة لا الجدولين.
قلب المحور الأخير وحده يعطي داخل A الصفين [9,-5,2] و[4,0,7]، وداخل B الصفين [-8,3,12] و[1,11,6]. يظل A أول جدول وB ثانيًا. لا نستنتج من عبارة «المحور الأخير» ترتيبًا مختلفًا للمحاور عما أعلنّاه.
أما قلب جميع المحاور فيضع الجدول المشتق من B أولًا، وصفاه [1,11,6] و[-8,3,12]. ثم يضع الجدول المشتق من A، وصفاه [4,0,7] و[9,-5,2]. أول قيمة في الناتج 1، أي القيمة التي كانت عند آخر جدول وآخر صف وآخر عمود.
لقلب ترتيب الجدولين فقط نختار المحور 0: تصبح الدفعة [B,A] بأعداد الجدولين الداخلية كما كانت. ولقلب الصفوف والأعمدة داخل كل جدول مع حفظ ترتيب الدفعة، نختار (1,2): يصبح A أولًا بصفَّي [4,0,7] و[9,-5,2]، ويأتي B ثانيًا بصفَّي [1,11,6] و[-8,3,12].
كل هذه النتائج تحتفظ بالشكل (2,2,3). لكن أول قيمة قد تكون 9 أو 1 أو 12 أو 4 بحسب الاختيار. لا يميز فحص الأبعاد وحده بين قلب الأعمدة وقلب الدفعة وكل ترتيب آخر في هذا المثال.
افصل قلب القيم عن نقل المحاور
transpose يبدل ترتيب المحاور؛ للمصفوفة ذات البعدين هو المنقول المعتاد. [2]
نعود إلى A ذات الشكل (2,3). منقولها ينقل كل عمود إلى صف: [[2,7],[-5,0],[9,4]]. الشكل الجديد (3,2)، وكل صف فيه قيمتان بدل الثلاث الأصلية.
قلب محوري A، في المقابل، يبقي الشكل (2,3). نقرأ الصفوف من الأخير إلى الأول، ونقرأ أعمدة كل صف بالعكس، فنحصل على [[4,0,7],[9,-5,2]]. ليست هذه صفوف المنقول السابق.
نميز المسارين من موضع الناتج: في القلب على المحورين، الخانة (r,c) تأخذ A(1−r,2−c). في المنقول، الخانة (c,r) تأخذ A(r,c). الأول يعكس اتجاه الفهرسة داخل المحورين؛ الثاني يبدل الدور بينهما.
لو كان الجدول مربعًا، فقد يبقى شكل المنقول والقلب متساويًا، لكن ذلك لا يثبت تساوي القيم في المواقع. كما أن وجود أعداد متكررة قد يخفي بعض الحركة. لذلك نحتفظ بقاعدة تحويل الموضع، لا بمجرد صورة الناتج أو أبعاده.

حرك التسميات مع البيانات
نعطي أعمدة A تسميات مؤلفة بالترتيب: شرق، وسط، غرب. لا نصف موقعًا جغرافيًا مقاسًا؛ الأسماء هنا تذكرنا بأن للعمود هوية مستقلة عن رقم موقعه الحالي.
قبل القلب، أزواج الصف الأول هي شرق مع 2، ووسط مع −5، وغرب مع 9. بعد عكس الأعمدة تصبح القيم [9,-5,2]. إذا تركنا التسميات كما كانت، نسبنا 9 إلى شرق مع أنها كانت مرتبطة بغرب.
للحفاظ على الأزواج، نعكس ترتيب التسميات أيضًا: غرب، وسط، شرق. تصير الأزواج غرب مع 9، ووسط مع −5، وشرق مع 2. موقع شرق تغير من الأول إلى الأخير، لكن قيمته المرتبطة لم تتغير. نحفظ تسميات الصفوف إذا قلبنا الصفوف، وتسميات الجدولين إذا قلبنا محور الدفعة.
القلب مرتين على المحور نفسه يعود بالفهرس إلى L−1−(L−1−j)=j. في مثال الأعمدة، [9,-5,2] يعود إلى [2,-5,9]، و[4,0,7] إلى [7,0,4]. تشمل العودة التسميات إذا طبقنا عليها التحويل نفسه مرتين.
نقصر الحساب على أعداد صحيحة وجداول مستطيلة غير فارغة ذات بعدين أو ثلاث، وأطوال محاور موجبة، ومحاور صحيحة مختلفة. تحققنا من المواضع وحفظ القيم والعودة؛ لم نشغل NumPy أو نفحص نسخًا أو تعديلًا عبر الناتج أو ذاكرة أو زمنًا أو جودة نموذج.
| الاختيار في C | ترتيب الجدولين | أول قيمة |
|---|---|---|
| axis=-1 | A ثم B | 9 |
| axis=0 | B ثم A | 12 |
| axis=(1,2) | A ثم B | 4 |
| axis=None | B ثم A | 1 |
للتوسع: الأبعاد والقطر والمنقول.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
