علوم وفضاء

nditer.reset: هل يعيد المرور على مكرر مستنفد؟

تتابع ثلاثة مراحل مرور.
المرحلة الثانية فارغة؛ الثالثة بعد إعادة الضبط.

انتهى المرور الأول بقيم المتجه. المرور الثاني بالمكرر نفسه كان فارغًا؛ بعد إعادة الضبط عادت القيم في تجربتنا.

إعادة حالة المرور

reset تعيد المكرر إلى حالته الابتدائية. [1]

المتجه والسياق

شغلنا NumPy 2.3.5 على CPython 3.12.14؛ المتجه int64 هو [9,-4,1]، وترتيب المرور C، داخل سياق with مفتوح.

الأعداد مؤلفة. نحول قيمة كل عنصر إلى int أثناء المرور، فلا نحتفظ بمراجع عناصر المرور. لا نغلق المكرر قبل إعادة ضبطه.

مرور فارغ ثم إعادة

المرور الأول أعطى [9,-4,1]، والثاني دون إعادة ضبط أعطى []؛ بعد it.reset() أعطى الثالث [9,-4,1].

a=np.array([9,-4,1],dtype=np.int64) with np.nditer(a,order="C") as it: first=[int(x) for x in it] second=[int(x) for x in it] it.reset() third=[int(x) for x in it]

نعيد استعمال المكرر نفسه، ولا ننشئ مكررًا جديدًا للمرور الثاني أو الثالث. القائمة الفارغة تصف المرحلة الثانية هنا، ولا تعني أن المتجه الأصلي صار فارغًا.

حالات finished في تجربة المرور.
انتهاء ثم إعادة ضبط ثم انتهاء.

حالة الانتهاء ونطاق الاختبار

تعبر finished عن انتهاء المرور على المدخل. [2]

ظهرت finished بالترتيب False ثم True ثم True ثم False ثم True: قبل الأول، وبعده، وبعد الثاني، وبعد reset، وبعد الثالث. مرت 121 حالة؛ أنشأنا 121 مكررًا واستدعينا reset 121 مرة، مع 363 مرحلة مرور.

لم يغيّر أي مرور بايتات المتجه أو نوعه أو شكله. ترتيب حالات finished يبين أن إعادة الضبط سبقت عودة القيم، وأن المرور الثالث انتهى أيضًا.

المرجع المستقل هو قائمة Python الأصلية للمرورين الأول والثالث، وقائمة فارغة للثاني. تضم الشبكة 120 متجهًا بأطوال 1 إلى 4، وقيم −2 أو صفر أو 3؛ أضفنا المثال فصارت 121 حالة. ظهرت 429 قيمة في المرحلة الأولى و429 في الثالثة، وصفر في الثانية.

اقتصر التنفيذ على متجهات int64 متجاورة غير فارغة وترتيب C ووضع القراءة الافتراضي، داخل سياق مفتوح. لم نفحص مكررًا مغلقًا أو كتابة أو تخزينًا مؤقتًا أو مدخلات متعددة أو شرائح أو نطاقات مرور مخصصة أو أداءً أو إصدارات أخرى.

المرحلةالقيمfinished
قبل المرور الأوللم يبدأFalse
بعد الأول[9,-4,1]True
بعد الثاني دون reset[]True
بعد resetلم يبدأ الثالثFalse
بعد الثالث[9,-4,1]True

للتوسع: القيمة والمحاور.

المراجع

  1. NumPy nditer.reset
  2. NumPy nditer attributes

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.