كيفية الإصلاح: تمت مصادفة قيمة غير صالحة في true_divide
أحد التحذيرات التي قد تواجهها عند استخدام NumPy هو:
RuntimeWarning : invalid value encountered in true_divide
يحدث هذا التحذير عند محاولة القسمة على قيمة غير صالحة (مثل NaN وInf وما إلى ذلك) في مصفوفة NumPy.
تجدر الإشارة إلى أن هذا مجرد تحذير وسيقوم NumPy ببساطة بإرجاع قيمة nan عند محاولة القسمة على قيمة غير صالحة.
يوضح المثال التالي كيفية الاستجابة لهذا التحذير عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا نحاول تقسيم قيم مصفوفة NumPy واحدة على قيم مصفوفة NumPy أخرى:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no]) RuntimeWarning : invalid value encountered in true_divide
لاحظ أن NumPy يقسم كل قيمة x على القيمة المقابلة لـ y، ولكن يتم إنتاج RuntimeWarning .
وذلك لأن آخر عملية قسمة تم إجراؤها كانت صفرًا مقسومًا على صفر، مما أدى إلى ظهور القيمة nan .
كيفية الرد على هذا التحذير
كما ذكرنا سابقًا، يعد RuntimeWarning مجرد تحذير ولا يمنع تنفيذ التعليمات البرمجية.
ومع ذلك، إذا كنت تريد منع هذا النوع من التحذير، يمكنك استخدام بناء الجملة التالي:
n.p. seterr (invalid=' ignore ')
هذا يخبر NumPy بإخفاء أي تحذيرات تحتوي على رسالة “غير صالحة”.
لذا، إذا قمنا بتشغيل الكود مرة أخرى، فلن نحصل على أي تحذيرات:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no])
لا يزال يتم إرجاع قيمة nan للقيمة الأخيرة للإخراج، ولكن لا يتم عرض أي رسالة تحذير هذه المرة.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال