Cara memperbaiki: objek 'numpy.float64' tidak dapat diartikan sebagai int
Kesalahan yang mungkin Anda temui saat menggunakan NumPy adalah:
TypeError : 'numpy.float64' object cannot be interpreted as an integer
Kesalahan ini terjadi ketika Anda memberikan float ke fungsi yang mengharapkan bilangan bulat.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita mencoba menggunakan perulangan for berikut untuk mencetak angka yang berbeda ke dalam array 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
Kami menerima kesalahan karena fungsi range() mengharapkan bilangan bulat, tetapi nilai dalam array NumPy adalah float.
Bagaimana cara memperbaiki kesalahan tersebut
Ada dua cara untuk memperbaiki kesalahan ini dengan cepat:
Metode 1: Gunakan fungsi int()
Salah satu cara untuk memperbaiki kesalahan ini adalah dengan membungkus panggilan dengan int() sebagai berikut:
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)
Dengan menggunakan fungsi int() , kita mengonversi setiap nilai float dalam array NumPy menjadi bilangan bulat untuk menghindari TypeError yang kita temui sebelumnya.
Metode 2: Gunakan fungsi .astype(int).
Cara lain untuk memperbaiki kesalahan ini adalah dengan terlebih dahulu mengonversi nilai array NumPy menjadi bilangan bulat:
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)
Dengan menggunakan cara ini kita terhindar dari TypeError lagi.
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk