Nasıl düzeltilir? yalnızca 1 boyutundaki diziler python skaler değerlerine dönüştürülebilir


Python kullanırken karşılaşabileceğiniz bir hata:

 TypeError : only size-1 arrays can be converted to Python scalars

Bu hata en sık, bir NumPy kayan nokta değerleri dizisini bir tamsayı değerleri dizisine dönüştürmek için np.int() işlevini kullanmaya çalışırken ortaya çıkar.

Ancak bu işlev, bir dizi değer yerine yalnızca tek bir değeri kabul eder.

Bunun yerine, bir NumPy float değerleri dizisini bir tamsayı değerleri dizisine dönüştürmek için x.astype(int) kullanmalısınız, çünkü bu işlev bir diziyi kabul etme yeteneğine sahiptir.

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

Hata nasıl yeniden oluşturulur?

Aşağıdaki NumPy float değerleri dizisini oluşturduğumuzu varsayalım:

 import numpy as np

#create NumPy array of float values
x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])

Şimdi bu kayan nokta değerleri dizisini bir tam sayı değerleri dizisine dönüştürmeye çalıştığımızı varsayalım:

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

Bir TypeError alıyoruz çünkü np.int() işlevi bir değer dizisini değil yalnızca tek değerleri kabul ediyor.

Hata nasıl düzeltilir?

Bir NumPy float değer dizisini tamsayı değerlere dönüştürmek için aşağıdaki kodu kullanabiliriz:

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

Değer dizisinin tam sayılara dönüştürüldüğünü ve astype() işlevinin bir değer dizisini işleyebildiği için herhangi bir hata almadığımızı unutmayın.

Not : astype() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

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