วิธีแก้ไข: ไม่สามารถตีความวัตถุ 'numpy.float64' เป็น int ได้


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ NumPy คือ:

 TypeError : 'numpy.float64' object cannot be interpreted as an integer

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณระบุทศนิยมให้กับฟังก์ชันที่คาดหวังจำนวนเต็ม

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเราลองใช้คำสั่ง for loop ต่อไปนี้เพื่อพิมพ์ตัวเลขที่แตกต่างกันลงในอาร์เรย์ NumPy:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(data[i]))

TypeError : 'numpy.float64' object cannot be interpreted as an integer

เราได้รับข้อผิดพลาดเนื่องจากฟังก์ชัน range() คาดว่าจะเป็นจำนวนเต็ม แต่ค่าในอาร์เรย์ NumPy เป็นแบบลอยตัว

วิธีการแก้ไขข้อผิดพลาด

มีสองวิธีในการแก้ไขข้อผิดพลาดนี้อย่างรวดเร็ว:

วิธีที่ 1: ใช้ฟังก์ชัน int()

วิธีหนึ่งในการแก้ไขข้อผิดพลาดนี้คือเพียงตัดการโทรด้วย int() ดังนี้:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(int(data[i])))

range(0, 3)
range(0, 4)
range(0, 5)
range(0, 7)
range(0, 10)
range(0, 11)

การใช้ฟังก์ชัน int() เราจะแปลงค่าทศนิยมแต่ละค่าในอาร์เรย์ NumPy ให้เป็นจำนวนเต็มเพื่อหลีกเลี่ยง TypeError ที่เราพบก่อนหน้านี้

วิธีที่ 2: ใช้ฟังก์ชัน .astype(int)

อีกวิธีหนึ่งในการแก้ไขข้อผิดพลาดนี้คือการแปลงค่าอาร์เรย์ NumPy เป็นจำนวนเต็มก่อน:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#convert array of floats to array of integers
data_int = data. astype (int)

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(data[i]))

range(0, 3)
range(0, 4)
range(0, 5)
range(0, 7)
range(0, 10)
range(0, 11)

โดยใช้วิธีนี้เราจะหลีกเลี่ยง TypeError อีกครั้ง

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

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

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

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

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