Nasıl düzeltilir? yalnızca tamsayı skaler diziler skaler dizine dönüştürülebilir


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

 TypeError : only integer scalar arrays can be converted to a scalar index

Bu hata genellikle iki nedenden biriyle oluşur:

1. Bir listede dizi indeksleme yapmayı denediniz.

2. Yanlış sözdizimi kullanarak iki matrisi birleştirmeye çalıştınız.

Aşağıdaki örnekler, her iki senaryoda da bu hataların nasıl önlenebileceğini göstermektedir.

Örnek 1: Bir listede dizi indeksleme yapmayı denediniz.

Matplotlib’de gösterge ve etiketlerle bir çizgi grafiği oluşturmak için aşağıdaki kodu kullanmaya çalıştığımızı varsayalım:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = data[random_values. astype (int)]

#view results
random_vals

TypeError : only integer scalar arrays can be converted to a scalar index

Bir listede dizi indekslemeyi kullanmaya çalıştığımız için bir hata alıyoruz.

Bu hatayı önlemek için öncelikle listeyi np.array() kullanarak aşağıdaki gibi bir NumPy dizisine dönüştürmeliyiz:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = np. array (data)[random_values. astype (int)]

#view results
random_vals

array([5, 7])

Listeyi ilk kez bir NumPy dizisine dönüştürdüğümüz için bu sefer herhangi bir hata olmadan listeden rastgele iki değer seçebiliyoruz.

Örnek 2: Yanlış sözdizimi kullanarak iki matrisi birleştirmeye çalıştınız.

İki NumPy matrisini birleştirmek için aşağıdaki kodu kullanmaya çalıştığımızı varsayalım:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate (mat1, mat2)

TypeError : only integer scalar arrays can be converted to a scalar index

Matrisleri concatenate() işlevine bir tanımlama grubu olarak sağlayamadığımız için bir hata alıyoruz.

Bu hatayı önlemek için, matrisleri concatenate() işlevine demet biçiminde sağlamak için çift parantez kullanmalısınız:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate ((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

Bu sefer iki matrisi hatasız bir şekilde birleştirmeyi başardık.

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