علوم وفضاء

fromiter: هل تقبل count أكبر من القيم المتاحة؟

عدد مطلوب أكبر من المتاح.
أربع قيم لا تكفي لطلب خمس.

طلبنا خمس قيم من مولد يعطي أربعًا. انتهى الاستدعاء بخطأ، ولم يعِد مصفوفة أقصر في تجربتنا.

عدد مطلوب

count يحدد عدد العناصر المقروءة؛ الافتراضي −1 يقرأ البيانات كلها. [1]

مولد محدود وسجل قراءة

شغلنا NumPy 2.3.5 على CPython 3.12.14؛ مولد محدود يعطي [8,-3,2,5]، والنوع المطلوب int64. نسجل كل قيمة قبل yield.

الأعداد مؤلفة. نلتقط نسخة من سجل القراءة فور عودة الاستدعاء أو الخطأ، قبل جمع بقية المولد؛ لذلك لا نخلط قراءة البناء مع قراءة البقية.

خمس مطلوبة وأربع متاحة

مع count=5 ظهر ValueError؛ سجل القراءة [8,-3,2,5]، ولا قيمة متبقية في المولد بعد الخطأ. لم يعد الاستدعاء مصفوفة من أربع قيم.

values=[8,-3,2,5] seen=[] def source(): for value in values: seen.append(value) yield value g=source() try:np.fromiter(g,dtype=np.int64,count=5) except ValueError:print("ValueError")

عدم عودة مصفوفة أقصر لا يعني أن المولد بقي كما كان. في هذه الحالة سُحبت قيمه الأربع قبل الرفض، ولذلك نفحص حالته أيضًا.

تحكمان بمولدين جديدين.
قراءة قيمتين وقراءة الأربع.

تحكمان ونطاق التنفيذ

يفحص التنفيذ نقص العدد المقروء عن count ويرفع ValueError عند النقص. [2]

بمولدين جديدين: count=2 أعطى [8,-3] وترك [2,5]؛ حذف count أعطى القيم الأربع ولم يترك قيمة. مرت 121 حالة و793 نداءً: 121 خطأ نقص و672 نجاحًا.

في تحكم العدد 2، كان سجل البناء [8,-3] والشكل (2,). في تحكم الافتراضي، كان السجل [8,-3,2,5] والشكل (4,). كل ناتج ناجح من int64، ونبدأ بمولد جديد لكل ضبط.

حسب المرجع المستقل البادئة المطلوبة والبقية من قائمة Python الأصلية. تضم الشبكة 120 متجهًا بأطوال 1 إلى 4، وقيم −2 أو صفر أو 3؛ أضفنا المثال فصارت 121 حالة. لكل حالة أعداد من صفر حتى الطول زائد واحد، ثم تحكم دون count: 793 نداءً و1442 قيمة خرج ناجحة.

اقتصر التنفيذ على مولدات محدودة جديدة لأعداد Python الصحيحة، مع int64. لم نفحص مدخلًا فارغًا أو مولدًا غير منتهٍ أو أخطاء داخل المولد أو فشل تحويل أو أعدادًا سالبة أخرى أو أنواعًا مركبة أو subarray أو object أو like أو أداءً أو إصدارات أخرى.

countالنتيجةالبقية
5ValueError[]
2[8,-3] / int64 / shape (2,)[2,5]
غير محدد[8,-3,2,5] / int64 / shape (4,)[]

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

المراجع

  1. NumPy fromiter
  2. NumPy 2.3.5 fromiter implementation

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