Nasıl düzeltilir? valueerror: i̇şlenenler şekillerle yayınlanamadı


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

 ValueError : operands could not be broadcast together with shapes (2,2) (2,3) 

Bu hata, Python’da numpy.dot() işlevi yerine çarpma işaretini ( * ) kullanarak matris çarpımı gerçekleştirmeye çalıştığınızda ortaya çıkar.

Aşağıdaki örnekler, her senaryoda bu hatanın nasıl düzeltileceğini gösterir.

Hata nasıl yeniden oluşturulur?

2 satırı ve 2 sütunu olan 2×2’lik bir C matrisimiz olduğunu varsayalım:

Ayrıca 2 satırı ve 3 sütunu olan 2×3’lük bir D matrisimiz olduğunu varsayalım:

C matrisini D matrisiyle nasıl çarpacağınız aşağıda açıklanmıştır:

Bunun sonucunda aşağıdaki matris elde edilir:

Python’da bu matris çarpımını aşağıdaki gibi çarpma işaretini (*) kullanarak yapmaya çalıştığımızı varsayalım:

 import numpy as np

#define matrices
C = np. array ([7, 5, 6, 3]). reshape (2, 2)
D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3)

#print dies
print (C)

[[7 5]
 [6 3]]

print (D)

[[2 1 4]
 [5 1 2]]

#attempt to multiply two matrices together
CD

ValueError: operands could not be broadcast together with shapes (2,2) (2,3)  

Bir ValueError alıyoruz. Bu hatayı neden aldığımızı anlamak için NumPy belgelerine başvurabiliriz:

NumPy, iki dizi üzerinde çalışırken bunların şekillerini öğe öğe karşılaştırır. Son boyutlarla (yani en sağdaki) başlar ve sola doğru ilerler. İki boyut uyumludur

  • eşittirler veya
  • bunlardan biri 1

Bu koşullar karşılanmazsa, dizilerin uyumsuz şekillere sahip olduğunu belirten bir ValueError: İşlenenler birlikte yayınlanamadı istisnası oluşturulur.

İki matrisimizin son boyutları aynı değere sahip olmadığından (C matrisinin son boyutu 2 ve D matrisinin son boyutu 3’tür) hata alıyoruz.

Hata nasıl düzeltilir?

Bu hatayı düzeltmenin en kolay yolu, matris çarpımını gerçekleştirmek için basitçe numpy.dot() işlevini kullanmaktır:

 import numpy as np

#define matrices
C = np. array ([7, 5, 6, 3]). reshape (2, 2)
D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3)

#perform matrix multiplication
C. dowry (D)

array([[39, 12, 38],
       [27, 9, 30]])

ValueError’dan kaçındığımızı ve her iki matrisi de başarıyla çarpmayı başardığımızı unutmayın.

Ayrıca sonuçların daha önce manuel olarak hesapladığımız sonuçlarla eşleştiğini 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:

Nasıl düzeltilir? Sütunlar çakışıyor ancak son ek belirtilmemiş
Nasıl düzeltilir: ‘numpy.ndarray’ nesnesinin ‘append’ özelliği yok
Nasıl düzeltilir? Tüm skaler değerleri kullanıyorsanız bir dizin iletmeniz gerekir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor

Yorum ekle

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