كيفية الإصلاح: تحذير وقت التشغيل: تمت مصادفة قيمة غير صالحة في double_scalars
الخطأ الذي قد تواجهه في بايثون هو:
runtimewarning: invalid value encountered in double_scalars
يحدث هذا الخطأ عندما تحاول إجراء عملية حسابية تتضمن أرقامًا صغيرة جدًا أو كبيرة جدًا، وتقوم Python ببساطة بإنشاء قيمة NaN كنتيجة.
يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا نحاول إجراء العملية الرياضية التالية باستخدام مصفوفتين NumPy:
import numpy as np #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (-3*array1). sum () / np. exp (-3*array2). sum () RuntimeWarning: invalid value encountered in double_scalars
نتلقى RuntimeWarning لأن النتيجة في المقام قريبة جدًا من الصفر.
هذا يعني أن إجابة مسألة القسمة ستكون كبيرة جدًا وأن بايثون غير قادرة على التعامل مع مثل هذه القيمة الكبيرة.
كيفية اصلاح الخطأ
عادةً ما تكون طريقة إصلاح هذا النوع من الأخطاء هي استخدام وظيفة خاصة من مكتبة Python أخرى يمكنها التعامل مع القيم الصغيرة جدًا أو الكبيرة جدًا في العمليات الحسابية.
في هذه الحالة، يمكننا استخدام الدالة logsumexp() من مكتبة SciPy:
import numpy as np from scipy. special import logsumexp #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (logsumexp(-3*array1) - logsumexp(-3*array2)) 2.7071782767869983e+195
لاحظ أن النتيجة كبيرة للغاية ولكننا لا نتلقى أي أخطاء لأننا استخدمنا دالة رياضية خاصة من مكتبة SciPy مصممة للتعامل مع هذه الأنواع من الأرقام.
في كثير من الحالات، من المفيد البحث عن وظائف خاصة في مكتبة SciPy يمكنها التعامل مع العمليات الرياضية المتطرفة، لأن هذه الوظائف مصممة خصيصًا للحوسبة العلمية.
ملاحظة : يمكنك العثور على الوثائق الكاملة عبر الإنترنت لوظيفة logsumexp() هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال