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