วิธีแก้ไข: พบค่าที่ไม่ถูกต้องใน 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 ยังคงถูกส่งกลับสำหรับค่าสุดท้ายของเอาต์พุต แต่คราวนี้จะไม่มีข้อความเตือนแสดง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *