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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *