تطبق nan_to_num الاستبدال على الحقيقي والتخيلي كلًّا على حدة. [1]
أي وحدة تتغير؟
تطبق nan_to_num الاستبدال على الحقيقي والتخيلي كلًّا على حدة. [1]
نسجل كل عنصر كزوج (الحقيقي، التخيلي)، ونحفظ الإشارة في كل مكوّن. سنضع الحالات الخاصة مباشرة؛ الأزواج ليست قياسات ولا نعرف قيمة مفقودة كان ينبغي استردادها.
نسأل عما يتغير عند تطبيق البدائل، ثم نقارنه بسياسة أخرى معلنة على العنصر كله. ليست السياسة الثانية تعريفًا للمكتبة؛ اخترناها لنعرف هل نحافظ على المكوّن المحدود عندما يحمل شريكه حالة خاصة.
copy=True يطلب نسخة. [1] نستخدمه في كل تشغيل هنا، ونراجع بايتات المصدر ومشاركة الذاكرة؛ لا نمد النتيجة إلى استدعاء يكتب في المصدر.
اقرأ المكوّنين بعد الاستبدال
شغّلنا NumPy 2.3.5 على CPython 3.12.14. أنشأنا a=np.array([complex(9,nan),complex(nan,-4),complex(inf,-6),complex(3,-inf),complex(2,5)],dtype=np.complex128)، حيث nan وinf قيمتان معلنتان مباشرة. الشكل (5,)، ومواضع العناصر من صفر إلى أربعة.
استعملنا complex(real,imag) لكل زوج؛ لم نبنِ الحالات بواسطة ضرب NaN في i أو جمع تعبيرات قد تغير المكوّن الذي قصدنا وسمه. هذا يحافظ على وضوح المدخل المسجل.
نفذنا b=np.nan_to_num(a,copy=True,nan=-11,posinf=7,neginf=-8). رجعت الأزواج [(9,-11),(-11,-4),(7,-6),(3,-8),(2,5)]. كل عدد بديل مؤلف، وليس حد جهاز أو تقديرًا استخرجناه من البيانات.
في العنصر الأول بقي الحقيقي 9، وتغير التخيلي NaN إلى −11. في الثاني بقي التخيلي −4، وتغير الحقيقي NaN إلى −11. في الثالث تحولت اللانهاية الموجبة إلى 7 وبقي التخيلي −6؛ في الرابع بقي الحقيقي 3 وتحولت اللانهاية السالبة إلى −8.
العنصر الخامس (2,5) محدود في المكوّنين فبقي. الناتج أيضًا complex128 بالشكل (5,). أصبح كل مكوّن محدودًا مع بدائلنا، لكن هذا وصف للتمثيل الناتج ولا يثبت أن عددًا بديلًا يمثل المعلومة الأصلية.
القناع وسياسة العنصر كله
أعطى np.isfinite(a) في المثال [False,False,False,False,True]. هذا القناع يسجل جوابًا واحدًا لكل عنصر؛ لا يخبرنا وحده أي المكوّنين يحمل الحالة الخاصة أو ما البديل الذي اخترناه.
نعلن سياسة منفصلة: إذا لم يكن المكوّنان محدودين معًا، نضع الزوج (−11,0) مكان العنصر كله. نحسبها في مرجع Python مستقل، ولا ننسبها إلى nan_to_num. تعطي [(−11,0),(−11,0),(−11,0),(−11,0),(2,5)] على مدخلنا.
هذه السياسة تفقد 9 في الأول و−4 في الثاني و−6 في الثالث و3 في الرابع، بينما أبقاها التشغيل المسجل. لذلك توافق القناع على وسم تلك العناصر لا يعني أن القرارين يعدلان المعلومات نفسها.
للتحكم أنشأنا الأزواج [(9,-4),(2,5)] بالنوع نفسه. أبقاها استدعاء البدائل، وأبقتها سياسة العنصر كله؛ قناع المحدودية [True,True]. التحكم يزيل الحالات الخاصة بدل تغيير إعدادات الاستبدال.
بقيت بايتات المدخل ثابتة، ولم يشارك الناتج ذاكرته في الفحوص. تطبيق البدائل مرة أخرى على الناتج أعاد البايتات نفسها في النطاق المختبر. لا يجعل هذا الثبات اختيار البدائل صحيحًا لمهمة واقعية.

مرجع مستقل وحدود الفحص
لكل مكوّن، يستخدم مرجع Python math.isnan ثم مقارنة اللانهايتين لتحديد −11 أو7 أو−8، وإلا يبقي المكوّن. يجمع الزوج بعد القرارين. لا يستدعي المرجع NumPy لبناء الناتج المتوقع أو سياسة العنصر كله.
اخترنا لكل مكوّن إحدى الحالات {−2,0,3,NaN,+inf,−inf}. لكل عنصر 6×6=36 زوجًا، ولمتجه من عنصرين 36×36=1296 حالة. أضفنا المثال ذي العناصر الخمسة والتحكم المحدود ذي العنصرين؛ يتضمنان أعدادًا خارج الشبكة.
لكل حالة تسعة فحوص: الأزواج مقابل المرجع؛ ثبات المدخل؛ غياب مشاركة الذاكرة؛ حفظ الشكل؛ حفظ complex128؛ محدودية الناتج؛ بقاء كل مكوّن محدود أصلي؛ ثبات التطبيق الثاني؛ والقناع مقابل شرط محدودية المكوّنين في المرجع.
الإجمالي (1296+2)×9=11682، وجميعها مرت. اختلفت الأزواج بين استبدال المكوّنات وسياسة العنصر كله في 1197 حالة من1298. هذا تعداد لهذه الحالات المؤلفة، وليس نسبة متوقعة في بيانات مستخدم.
اقتصرنا على بعد واحد وcomplex128 وcopy=True والبدائل المعلنة. لم نفحص البدائل الافتراضية للانهاية، أوcopy=False، أوبدائل مصفوفية، أوأنواع وأشكال أخرى، أوإشارات الصفر وحمولات NaN، أوالأداء.
نحفظ الأزواج الأصلية والإعدادات والإصدار وسياسة القرار. محدودية الناتج لا تسترد قيمة غائبة ولا تتحقق من المصدر أوالوحدة أوملاءمة التعويض؛ يحتاج كل غرض واقعي مبرره خارج هذا الفحص.
| الأصل: الحقيقي، التخيلي | بعد البدائل |
|---|---|
| (9,NaN) | (9,−11) |
| (NaN,−4) | (−11,−4) |
| (+inf,−6) | (7,−6) |
| (3,−inf) | (3,−8) |
| (2,5) | (2,5) |
للتوسع: قناع القيم المحدودة.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
