Cara memperbaiki: valueerror: operan tidak dapat disiarkan dengan bentuk


Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:

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

Kesalahan ini terjadi ketika Anda mencoba melakukan perkalian matriks menggunakan tanda perkalian ( * ) dengan Python, bukan fungsi numpy.dot() .

Contoh berikut menunjukkan cara memperbaiki kesalahan ini di setiap skenario.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita mempunyai matriks C berukuran 2×2 yang mempunyai 2 baris dan 2 kolom:

Misalkan kita juga mempunyai matriks D berukuran 2×3 yang mempunyai 2 baris dan 3 kolom:

Berikut cara mengalikan matriks C dengan matriks D:

Ini menghasilkan matriks berikut:

Misalkan kita mencoba melakukan perkalian matriks dengan Python menggunakan tanda perkalian (*) sebagai berikut:

 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)  

Kami menerima ValueError . Kami dapat merujuk ke dokumentasi NumPy untuk memahami mengapa kami menerima kesalahan ini:

Saat beroperasi pada dua larik, NumPy membandingkan bentuknya elemen demi elemen. Ini dimulai dengan dimensi akhir (yaitu paling kanan) dan berlanjut ke kiri. Dua dimensi kompatibel ketika

  • mereka setara, atau
  • salah satunya adalah 1

Jika kondisi ini tidak terpenuhi, pengecualian ValueError: Operands tidak dapat disiarkan bersama akan ditampilkan, yang menunjukkan bahwa array memiliki bentuk yang tidak kompatibel.

Karena kedua matriks kita tidak memiliki nilai dimensi akhir yang sama (matriks C memiliki dimensi akhir 2 dan matriks D memiliki dimensi akhir 3), kita menerima kesalahan.

Bagaimana cara memperbaiki kesalahan tersebut

Cara termudah untuk memperbaiki kesalahan ini adalah dengan menggunakan fungsi numpy.dot() untuk melakukan perkalian matriks:

 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]])

Perhatikan bahwa kami menghindari ValueError dan berhasil mengalikan kedua matriks.

Perhatikan juga hasilnya sesuai dengan hasil yang kita hitung secara manual tadi.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki: Kolom tumpang tindih tetapi tidak ada akhiran yang ditentukan
Cara Memperbaiki: Objek ‘numpy.ndarray’ tidak memiliki atribut ‘append’
Cara memperbaiki: Jika Anda menggunakan semua nilai skalar, Anda harus meneruskan indeks
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *