trim_zeros تقص الأصفار الطرفية. [1]
قص الطرف لا يحذف الصفر الداخلي
نؤلف x=[0,0,6,0,-2,0]. الأعداد بلا وحدة قياس ولا تمثل تسجيلًا حقيقيًا. نبدأ ترقيم مواضعها من صفر إلى خمسة؛ نقرأ القائمة من اليسار إلى اليمين كما كتبناها.
أول قيمة غير صفرية هي 6 عند الفهرس 2، وآخر قيمة غير صفرية هي −2 عند الفهرس 4. نحتفظ بالمقطع المتصل من 2 إلى 4: [6,0,-2]. حذفنا صفرين من البداية وصفرًا من النهاية، فانتقل الطول من ستة إلى ثلاثة.
الصفر عند الفهرس 3 يقع بين قيمتين غير صفريتين، لذلك بقي في المقطع. قص الهامشين لا يحول القائمة إلى سجل بالقيم غير الصفرية وحدها؛ عدد غير الأصفار ما زال اثنين، وعدد المواضع المحتفظ بها ثلاثة.
نؤلف للمقارنة تصفية بشرط «القيمة لا تساوي صفرًا». تعطي [6,-2] بطول اثنين، فتزيل الصفر الداخلي أيضًا. إذا أردنا مقطعًا متصلًا يحفظ التباعد بين القيم، فهذه التصفية تجيب عن سؤال آخر.
يمكن أن يكون الصفر الداخلي ذا معنى في بيانات فعلية. مثالنا يبين موضعه فقط؛ لا نحكم أنه مفقود أو غير صالح، ولا نستبدله أو نستنتج سببه من قيمته.
اختيار الطرف يغير الشريحة
f يشير إلى طرف الفهرس الأقل، وb إلى الأعلى؛ الافتراضي fb. [1]
في نموذج البداية فقط، نتجاوز أول صفرين ثم نحفظ كل الباقي: [6,0,-2,0]. الطول أربعة؛ الصفر الأخير باقٍ لأننا لم نطلب قص النهاية. وفي نموذج النهاية فقط نحذف الصفر الأخير فنحفظ [0,0,6,0,-2] بطول خمسة.
قص الطرفين يعطي [6,0,-2] بطول ثلاثة. جمع عدد المحذوفين، وهو ثلاثة، لا يحدد وحده كيف توزع الحذف على الطرفين. نكتب الاختيار والبداية والنهاية عند مراجعة الشريحة.
شريحة بايثون s[i:j] تشمل i وتستبعد j. [2]
نكتب المقطع المحتفظ به في x على صورة x[2:5]. الفهارس الداخلة هي 2 و 3 و 4؛ العدد 5 حدّ التوقف، وليس فهرسًا احتفظنا بقيمته. الطول 5−2=3، ويتفق مع القيم الثلاث.
وللبداية فقط نكتب x[2:6]، وللنهاية فقط x[0:5]. هذه شرائح قوائم نحسبها في بايثون؛ لا نقدمها بوصفها فهارس يعيدها trim_zeros، بل نوثق بها اختيارات نموذجنا.
احفظ الإزاحة والطول الأصلي
المقطع المحتفظ به يبدأ فهرسته الجديدة من صفر. عند قراءة [6,0,-2]، الرقم الجديد 0 يحمل 6، والرقم 1 يحمل صفرًا، والرقم 2 يحمل −2. مواضعها في x كانت 2 و 3 و 4؛ العلاقة في مثالنا هي الأصلي=2+الجديد.
نؤلف y=[0,6,0,-2,0,0]. طولها ستة أيضًا، وأول غير صفر عند 1 وآخره عند 3. يعطي قص الطرفين [6,0,-2] نفسه، لكنه يمثل هنا الفهارس 1 و 2 و 3؛ العلاقة الأصلي=1+الجديد.
إذن المقطع والطول الأصلي 6 لا يحددان البداية وحدهما. في x حذفنا صفرين قبل المقطع وواحدًا بعده؛ في y حذفنا واحدًا قبله واثنين بعده. عرض المقطع وحده لا يثبت موضع 6 في المصدر.
نحفظ بطاقة x: الطول الأصلي 6، بداية القص 2، المقطع [6,0,-2]. الطول النهائي 3، فيبقى هامش أخير بطول 6−2−3=1. نضع صفرين ثم المقطع ثم صفرًا، فنستعيد x كاملة لأن الحذف اقتصر على الأصفار.
وبطاقة y لها البداية 1 مع الطول 6 والمقطع نفسه. الهامش الأخير 6−1−3=2؛ نضع صفرًا ثم المقطع ثم صفرين فنستعيد y. هذا تركيب مستقل من معلومات حفظناها، وليس إجراء استرجاع تلقائيًا من المكتبة.
إذا كانت الفهارس مرتبطة بأزمنة أو إحداثيات في تطبيق آخر، يلزم حفظ خريطتها كذلك. لم نحدد زمنًا لكل خطوة هنا، فلا نحول فرق الفهرس إلى ثوانٍ أو مسافة.

راجع الحالة الخالية ونطاق المثال
axis=None يحدد أصغر صندوق يحوي غير الأصفار. [1]
نقصر الحساب على قائمة أحادية بأعداد صحيحة. لقائمة [0,0,0,0] لا توجد أول قيمة غير صفرية ولا أخيرة. بعد إزالة الأصفار الطرفية كلها نحصل في نموذجنا على قائمة خالية، لكن طول المصدر كان أربعة؛ لا نخلطها بمدخل خالٍ أصلاً.
للمدخل الخالي نعطي قائمة خالية أيضًا. في الحالة التي كلها أصفار، حفظ الطول الأصلي يكفي لإعادة أربعة أصفار؛ لا نختلق فهرس أول غير صفر. بطاقات البداية السابقة تخص المقاطع غير الخالية في x وy.
فحصنا جميع 3280 قائمة بطول من صفر إلى سبعة، بقيم من −2 وصفر و 3. لكل اختيار fb وf وb قارنا مسحًا من الطرفين بحدود مستقلة مستخرجة من مواضع غير الأصفار. راجعنا قراءة الشريحة والمواضع وإعادة الهامشين وبقاء عدد غير الأصفار.
وفحصنا أن تطبيق القص نفسه على نتيجته لا يغيرها، وأن قص البداية ثم النهاية أو العكس يعطي مقطع الطرفين نفسه، وأن المصدر بقي كما هو في نموذجنا. هذه اختبارات محدودة محددة؛ لا تثبت خصائص الذاكرة أو الزمن أو كل أنواع المدخلات.
لم نشغل NumPy أو نفحص axis متعدد الأبعاد أو نصوصًا أو NaN أو اللانهاية أو الأنواع أو الأداء. لا نصف الدالة بأنها أحادية الأبعاد فقط بناءً على نطاق مثالنا. عند مراجعة قص فعلي، نحدد اختيار الطرف والحدود ونحفظ بيانات الموضع قبل تفسير النتيجة.
| الاختيار على x | الشريحة المؤلفة | القيم | الطول |
|---|---|---|---|
| البداية | 2:6 | 6، 0، −2، 0 | 4 |
| النهاية | 0:5 | 0، 0، 6، 0، −2 | 5 |
| الطرفان | 2:5 | 6، 0، −2 | 3 |
للتوسع: الأبعاد والقطر والمنقول.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
