عند حذف axis، يزيح roll التسلسل المسطح ثم يعيد الشكل الأصلي. [1] لذلك قد تنتقل قيمة إلى صف آخر رغم بقاء عدد الصفوف والأعمدة.
حدد المحور الذي تتحرك عليه القيم
نؤلف مصفوفة A=[[2,5,9],[4,7,11]]. نعرض عناصر الصف من اليسار إلى اليمين، ونرقم الصفين 0 و1، والأعمدة 0 و1 و2. هذه قيم تعليمية، وليست بيانات صورة أو قراءات جهاز.
roll يعيد القيم التي تجاوزت النهاية إلى البداية، ويحفظ شكل المدخل. [1]
نحدد أولًا الحركة داخل كل صف، أي المحور 1 في مصفوفتنا. مع إزاحة +1، تنتقل 2 إلى العمود 1، و5 إلى العمود 2، وتعود 9 إلى العمود 0. يصبح الصف الأول [9,2,5]. بالطريقة نفسها يصبح الثاني [11,4,7].
النتيجة [[9,2,5],[11,4,7]]. لا تعبر قيمة من صف إلى آخر في هذا الاختيار؛ كل صف حلقة مستقلة طولها 3. الإزاحة الموجبة تنقل قيمة الموضع القديم j إلى الموضع الجديد (j+1) بعد اختزاله إلى أعمدة الصف.
أما الحركة على المحور 0، فهي بين الصفوف مع ثبات الأعمدة. مع +1 ينتقل الصف [2,5,9] إلى الموضع 1، ويعود [4,7,11] إلى الموضع 0، فنحصل على [[4,7,11],[2,5,9]].
كل نتيجة ما زالت بصفين وثلاثة أعمدة. بقاء الشكل لا يخبرنا أي العناصر بقيت في صفها؛ يجب قراءة محور الحركة. وفي هذه الأمثلة، لم يحذف انتقال الطرف قيمةً ولم ينشئ قيمة جديدة.
قارن ذلك بحذف المحور
الافتراضي axis=None يسطح المصفوفة، يزيحها، ثم يستعيد شكلها. [1]
نكتب تسلسل مثالنا صفًا بعد صف: [2,5,9,4,7,11]. طول هذه الحلقة 6، وهي تختلف عن الحلقتين ذواتَي الطول 3 في إزاحة كل صف وحده.
إزاحة +1 في هذا التسلسل تعيد 11 من النهاية إلى البداية، فتنتج [11,2,5,9,4,7]. نعيد تقسيمها إلى صفين، كل منهما يحوي ثلاث قيم. نحصل على [[11,2,5],[9,4,7]].
القيمة 9 كانت في آخر الصف الأول، ثم صارت في أول الصف الثاني. والقيمة 11 كانت في آخر الصف الثاني، ثم صارت في أول الصف الأول. لذلك لا نقرأ بقاء الشكل 2×3 بوصفه ضمانًا لبقاء هوية الصفوف.
للمقارنة المباشرة، إزاحة الصفوف من الداخل أعطت [[9,2,5],[11,4,7]]. وإزاحة التسلسل المسطح أعطت [[11,2,5],[9,4,7]]. كلاهما يحفظ القيم الست وعددها، لكن مواقع 9 و11 مختلفة.
إذا كان الصف يمثل مجموعة مستقلة في مهمة فعلية، فنتيجة تمرر قيمته إلى صف آخر تحتاج مراجعة دلالة المحور. الأمثلة الحالية لا تفترض معنى للصفوف؛ هي تكشف مواضع العناصر التي تختارها كل قاعدة.
اختزل الإزاحة وراجع اتجاهها
نشتق فهرسة الحلقة: لمتتالية طولها موجب L، إزاحة k تعني أن الناتج عند j يأخذ الأصل عند (j−k) mod L. نستخدم الباقي من 0 إلى L−1. الإضافة والطرح هنا على فهارس، لا على قيم المصفوفة.
في صف طولُه 3، العددان 4 و1 يختلفان بمضاعف 3. لذلك (j−4) mod 3=(j−1) mod 3 لكل موضع؛ الإزاحتان تعطيان النتيجة نفسها. والإزاحة +3 تعيد الصف الأصلي.
تركيب إزاحتين k وh يعطي فهرس الأصل (j−h−k) mod L؛ أي إزاحة k+h. من هنا، تكرار +1 ثلاث مرات على صف طوله 3 يعيده. كما أن إزاحة −k بعد +k تعيد الأصل في نموذج الحلقة.
لإزاحة −1 في مثال الصفوف، ينتقل أول كل صف إلى نهايته: [2,5,9] يصبح [5,9,2]، و[4,7,11] يصبح [7,11,4]. النتيجة [[5,9,2],[7,11,4]]، وهي الحركة العكسية لإزاحة +1 داخل الصفوف.
يمكن إعطاء إزاحة لكل محور باستخدام shift وaxis كتتابعين متناظرين. [1]
نختار shift=(1,1) وaxis=(0,1): نزيح الصفوف خطوة، ثم القيم داخل كل صف خطوة. من [[4,7,11],[2,5,9]] نصل إلى [[11,4,7],[9,2,5]]. في نموذجنا تأخذ الخانة (r,c) القيمة الأصلية عند ((r−1) mod 2,(c−1) mod 3).
طول الحلقة يعتمد على الاختيار: المحور 1 طوله 3، والمحور 0 طوله 2، والتسلسل المسطح طوله 6. لذلك +3 يعيد إزاحة الصفوف الداخلية إلى الأصل، لكنه لا يعيد بالضرورة اختيار التسلسل المسطح في مثالنا.

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