repeat يكرر العناصر متجاورة، ويستخدم المدخل المسطح عند حذف axis. [1] نتابع ترتيب النتيجة قبل عدّ صفوفها وأعمدتها.
كرر القيم على المحور المختار
repeat يكرر كل عنصر بحسب عدد تكراراته على المحور المختار. [1]
نؤلف A=[[3,-2,8],[6,1,5]]. صفان وثلاثة أعمدة، وأعداد بلا وحدة وليست سجلًا لقياسات جديدة. نعرض قيم الصف من اليسار إلى اليمين، ونرقم الصفوف والأعمدة من صفر.
نختار axis=1 وعدًّا موحدًا 2، فيحصل كل عنصر في الصف على موضعين متجاورين. الصف الأول يصير [3,3,-2,-2,8,8]، والثاني [6,6,1,1,5,5]. لا نضع الصف كاملًا ثم نعيده؛ ننهي تكرارات 3 قبل الانتقال إلى −2، ثم إلى 8.
نتيجة هذا الاختيار ذات الشكل (2,6). بقي عدد الصفوف 2، وطول كل صف صار 3×2=6. الأعداد السالبة تبقى سالبة؛ التكرار يتعلق بعدد المواضع، وليس بضرب قيمة العدد في العدّ.
أما تكرار الصفوف على axis=0، فنؤلف عدّين 1 و2. نضع الصف الأول مرة ثم الثاني مرتين: [[3,-2,8],[6,1,5],[6,1,5]]. الشكل (3,3)، وكل صف مكرر يحافظ على ترتيب أعمدته.
في نموذجنا، نجعل طول قائمة العدّ مساويًا لطول المحور المختار، أو نستخدم عدًّا موحدًا. لا نختبر قائمة مختلفة الطول أو عدًّا سالبًا. نكتب هذا الشرط قبل الحساب كي يبقى معنى كل عدد تكرار محددًا.
افهم النتيجة عند حذف المحور
الافتراضي في repeat يستخدم المدخل المسطح ويعيد مصفوفة مسطحة. [1]
لقراءة مثالنا مسطحًا، نكتب الصف الأول ثم الثاني: [3,-2,8,6,1,5]. لدينا ست قيم على محور واحد. ثم نكرر كل قيمة مرتين متجاورتين، فنصل إلى [3,3,-2,-2,8,8,6,6,1,1,5,5].
الخرج طوله 12، لكنه ليس جدولًا تلقائيًا بصفين وستة أعمدة. القيم نفسها يمكن عرضها في سطر طويل، وعدد المحاور المعلن في هذا الاختيار واحد. لا نستعيد صفوف المدخل لمجرد أنها كانت موجودة قبل العملية.
في المقابل، axis=1 في القسم السابق أبقى الصفين منفصلين، بشكله (2,6). إذا قرأنا هذا الناتج صفًا بعد صف، نحصل هنا على القيم الاثنتي عشرة نفسها، لكن تنظيم المحاور مختلف.
يتيح هذا المثال فحص نوع السؤال: هل نريد تكرار قيم متتالية، أم تكرار أعمدة كل صف؟ لا تكفي مقارنة العدد الكلي 12؛ نحتفظ بعدد المحاور ومعنى الصف حين يحتاج المستهلك التالي إلى جدول.
قارن تكرار العنصر بتكرار النمط
tile يبني الناتج بتكرار المدخل وفق reps. [2]
نختار هنا reps=(1,2): مرة في اتجاه الصفوف، ومرتين في اتجاه الأعمدة. صف A الأول [3,-2,8] يظهر كاملًا ثم يتبعه النمط نفسه، فيصير [3,-2,8,3,-2,8]. والثاني يصير [6,1,5,6,1,5].
الشكل (2,6) يوافق شكل repeat مع عدّ 2 على الأعمدة، لكن القيمة الثانية في الصف الأول مختلفة: 3 في repeat و−2 في tile. كما يظهر 8 في الموضعين 4 و5 في repeat، وفي الموضعين 2 و5 في tile، بترقيم يبدأ من صفر.
نشتق الفرق من الفهرس. لصف طوله 3 وعدّ موحد موجب 2، تكرار العنصر يجعل موضع الخرج j يأخذ المصدر عند الجزء الصحيح من j/2. تكرار النمط يجعل الموضع يأخذ المصدر عند باقي j على 3. في الموضع j=1، نأخذ المصدر 0 في الأول والمصدر 1 في الثاني.
تبقى هذه المقارنة ضمن مدخل ذي بعدين وزوج تكرار ذي عددين. لا نستنتج منها قواعد إضافة محاور أو بثّ أو تخطيط ذاكرة. ولا نجعل تساوي قيمٍ في بعض المواقع دليلًا على أن العمليتين متطابقتان.

تتبع العدّ وهوية الموضع
نؤلف الآن قائمة عدّ للأعمدة [2,0,1]. نكرر العمود 0 مرتين، ولا نضع أي نسخة من العمود 1، ونضع العمود 2 مرة. لذلك صفا الناتج هما [3,3,8] و[6,6,5].
مجموع العدّ 2+0+1=3، فيبقى الشكل (2,3) مثل المدخل. ومع ذلك اختفت القيمتان −2 و1 اللتان كانتا في العمود الأوسط، وتكررت 3 و6. الحفاظ على الأبعاد لم يحفظ مجموعة القيم أو هويات الأعمدة.
نعطي الأعمدة التسميات المؤلفة أول وثانٍ وثالث. بعد تطبيق العدّ تصبح أول وأول وثالث، ويكون أصل المواضع بالأرقام 0 ثم 0 ثم 2. إذا أبقينا التسميات القديمة، نسبنا النسخة الثانية من العمود الأول إلى هوية العمود الثاني.
حتى نعرف ما تكرر، نحفظ قائمة العدّ وخريطة المصدر إلى الخرج. لكل مصدر i، نضع كتلة متجاورة طولها عدّ ذلك المصدر. إذا كان العدّ صفرًا، كانت كتلته خالية؛ وإذا كانت العدّات كلها صفرًا، لم نحصل على أي قيمة. في مثال الأعمدة يصبح كل صف خاليًا من العناصر.
لا يمكن استعادة −2 و1 من الناتج [3,3,8] و[6,6,5] وحده. وإذا لم نحتفظ بالعدّ، فقد لا نعرف هل النسختان المتساويتان جاءتا من مصدر واحد مكرر أم من موضعين أصليين لهما القيمة نفسها.
التكرار هنا يعيد استعمال أعداد اخترناها؛ لا يولد قراءة جديدة مستقلة. نقصر الحساب على مدخل صحيح ذي بعدين وأطوال موجبة، وعدّات صحيحة غير سالبة موحدة أو مطابقة لطول المحور، مع السماح بخرج خالٍ. لم نشغل NumPy أو نفحص النسخ أو الذاكرة أو الزمن أو جودة تدريب نموذج.
| الاختيار | الشكل | الصف الأول أو القائمة |
|---|---|---|
| repeat: 2، axis=1 | (2,6) | 3، 3، −2، −2، 8، 8 |
| tile: (1,2) | (2,6) | 3، −2، 8، 3، −2، 8 |
| repeat: [2,0,1]، axis=1 | (2,3) | 3، 3، 8 |
| repeat: 2، axis=None | (12,) | 3، 3، −2، −2، 8، 8، 6، 6، 1، 1، 5، 5 |
للتوسع: الأبعاد والقطر والمنقول.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
