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ı