Nasıl düzeltilir: 'numpy.float64' nesnesi int olarak yorumlanamıyor


NumPy’yi kullanırken karşılaşabileceğiniz bir hata:

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

Bu hata, tamsayı bekleyen bir işleve kayan nokta sağladığınızda ortaya çıkar.

Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.

Hata nasıl yeniden oluşturulur?

Bir NumPy dizisine farklı sayıları yazdırmak için aşağıdaki for döngüsünü kullanmaya çalıştığımızı varsayalım:

 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() fonksiyonu tamsayı beklediğinden fakat NumPy dizisindeki değerler kayan nokta olduğundan hata alıyoruz.

Hata nasıl düzeltilir?

Bu hatayı hızlı bir şekilde düzeltmenin iki yolu vardır:

Yöntem 1: int() işlevini kullanın

Bu hatayı düzeltmenin bir yolu, çağrıyı int() ile aşağıdaki gibi sarmaktır:

 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)

Daha önce karşılaştığımız TypeError hatasını önlemek için int() fonksiyonunu kullanarak NumPy dizisindeki her float değerini bir tamsayıya dönüştürüyoruz.

Yöntem 2: .astype(int) işlevini kullanma

Bu hatayı düzeltmenin başka bir yolu da öncelikle NumPy dizisi değerlerini tam sayılara dönüştürmektir:

 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)

Bu yöntemi kullanarak TypeError’dan tekrar kaçınırız.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir