วิธีแก้ไข: runtimewarning: พบค่าที่ไม่ถูกต้องใน double_scalars
ข้อผิดพลาดที่คุณอาจพบใน Python คือ:
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 ไม่สามารถจัดการค่าที่มากขนาดนี้ได้
วิธีการแก้ไขข้อผิดพลาด
โดยทั่วไปวิธีการแก้ไขข้อผิดพลาดประเภทนี้คือการใช้ฟังก์ชันพิเศษจากไลบรารี 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() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้