Nasıl düzeltilir? valueerror: bir dizi öğesini bir diziyle ayarlama


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

 ValueError : setting an array element with a sequence.

Bu hata genellikle birden fazla sayıyı bir NumPy dizisinde tek bir konumda gruplamaya çalışırken ortaya çıkar.

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 dizisine sahip olduğumuzu varsayalım:

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Şimdi dizinin ilk konumuna iki sayı yerleştirmeye çalıştığımızı varsayalım:

 #attempt to cram values '4' and '5' both into first position of NumPy array
data[0] = np. array ([4,5])

ValueError : setting an array element with a sequence.

Hata bize tam olarak neyi yanlış yaptığımızı söylüyor: NumPy dizisinin bir öğesini bir dizi değerle tanımlamaya çalıştık.

Özellikle NumPy dizisinin ilk pozisyonuna “4” ve “5” değerlerini yerleştirmeye çalıştık.

Bu mümkün olmadığından hata alıyoruz.

Hata nasıl düzeltilir?

Bu hatayı düzeltmenin yolu, dizinin ilk konumuna basitçe bir değer atamaktır:

 #assign the value '4' to the first position of the array
data[0] = np. array ([4])

#view updated array
data

array([ 4, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Herhangi bir hata almadığımızı unutmayın.

Dizi elemanlarına aslında iki yeni değer atamak istiyorsak aşağıdaki sözdizimini kullanmamız gerekir:

 #assign the values '4' and '5' to the first two positions of the array
data[0:2] = np. array ([4, 5])

#view updated array
data

array([ 4, 5, 3, 4, 5, 6, 7, 8, 9, 10])

Tablodaki ilk iki değerin değiştiğini, diğer tüm değerlerin aynı kaldığını unutmayın.

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