علوم وفضاء

select: هل يختفي أثر default عندما لا يستخدم؟

قناع كامل ونوعان للناتج.
لا خانة بديلة؛ النوع مختلف.

لم تأخذ أي خانة البديل في تجربة المطابقة الكاملة؛ مع ذلك اختلف نوع الناتج بين البديل العائم والصحيح.

قيمة البديل

تضع select قيمة default عند موضع لا يحقق أي شرط. [1]

مطابقة كاملة

شغلنا NumPy 2.3.5 على CPython 3.12.14؛ الاختيار int64 هو [8,-3,2,5]، والقناع المنطقي كله True، بالشكل (4,).

الأعداد مؤلفة. نثبت اختيارًا واحدًا وقناعًا مساوي الشكل؛ لا يوجد تداخل بين شروط متعددة.

نوع مختلف دون خانة بديلة

مع default=0.5 أعطى الناتج [8.0,-3.0,2.0,5.0] من float64؛ عدد المواضع غير المطابقة صفر، والمدخل بقي int64.

out=np.select([mask],[a],default=0.5) print(out.tolist(),out.dtype)

تساوي القيم العددية المختارة لا يثبت تساوي dtype. لم تظهر 0.5 في خرج هذا القناع، ولا تغير نوع مصفوفة الاختيار الأصلية.

قناع مختلط مع البديلين.
قيمة البديل تظهر عند False.

تحكم النوع والقناع

في النسخة المثبتة، تضاف default إلى قائمة تحديد النوع قبل إنشاء الناتج ونسخ الاختيارات إليه. [2]

تحكم default=0 أعطى [8,-3,2,5] من int64. قناع [True,False,True,False] أعطى [8.0,0.5,2.0,0.5] بالبديل العائم، و[8,0,2,0] بالصحيح؛ مرت 122 حالة و244 نداءً.

control=np.select([mask],[a],default=0) print(control.tolist(),control.dtype)

قارن المرجع المستقل قوائم Python: يأخذ القيمة الأصلية حيث القناع True، والبديل حيث False؛ في المسار العائم يحول القيم إلى float. لم يستدعِ result_type لبناء التوقع.

الشبكة 120 متجهًا بأطوال 1 إلى 4 وقيم −2 أو صفر أو 3، بقناع كله True. أضفنا المثال نفسه بهذا القناع ثم بالقناع المختلط: 122 حالة، ولكل حالة بديلان، أي 244 نداءً. راجعنا الشكل والنوع والقيم وثبات بايتات الاختيار والقناع.

اقتصر التنفيذ على اختيار int64 أحادي غير فارغ وقناع مطابق، وبديلين عدديين محددين. لم نفحص أنواعًا أخرى أو بثًا أو شروطًا متداخلة أو بدائل نصية أو أعدادًا كبيرة أو NaN أو أداءً أو إصدارات أخرى.

القناعالبديلالقيم والنوع
كلها True0.5[8.0,-3.0,2.0,5.0] / float64
كلها True0[8,-3,2,5] / int64
True,False,True,False0.5[8.0,0.5,2.0,0.5] / float64
True,False,True,False0[8,0,2,0] / int64

للتوسع: نوع خرج الغلاف.

المراجع

  1. NumPy select
  2. NumPy 2.3.5 select implementation

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