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