Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pendaraban Matriks NumPy Gagal dengan Ralat Penyiaran?

Mengapa Pendaraban Matriks NumPy Gagal dengan Ralat Penyiaran?

Susan Sarandon
Susan Sarandonasal
2024-12-19 15:31:09420semak imbas

Why Does NumPy Matrix Multiplication Fail with a Broadcasting Error?

Ralat Penyiaran dalam Pendaraban Matriks NumPy

Apabila melakukan pendaraban matriks antara dua tatasusunan NumPy, adalah penting untuk memastikan bentuknya serasi. Walau bagaimanapun, penggunaan operator pendaraban (*) yang salah boleh menyebabkan ralat "ValueError: operan tidak dapat disiarkan bersama-sama bentuk".

Pertimbangkan dua tatasusunan: X dengan bentuk (m, n) dan y dengan bentuk (n, 1). Operasi yang dimaksudkan ialah pendaraban matriks, yang sepatutnya menghasilkan vektor (m, 1). Walau bagaimanapun, operator pendaraban dalam NumPy digunakan untuk operasi mengikut unsur, yang memerlukan penyiaran untuk menjajarkan dimensi.

Dalam contoh yang diberikan, peraturan penyiaran dilanggar kerana dimensi pertama X (97) bercanggah dengan dimensi sepadan y (2). Oleh itu, operasi pendaraban gagal dan mencetuskan ralat.

Untuk melakukan pendaraban matriks, anda harus menggunakan kaedah dot(). Kaedah ini direka khusus untuk operasi matriks dan memastikan penjajaran dimensi yang betul. Menggunakan dot() dan bukannya * menyelesaikan isu penyiaran dan menghasilkan vektor yang dijangkakan (m, 1).

Selain itu, ambil perhatian bahawa menggunakan jenis matriks dalam NumPy (numpy.matrix) boleh merumitkan operasi. Secara umumnya disyorkan untuk menggunakan numpy.ndarray untuk tatasusunan sebaliknya.

Atas ialah kandungan terperinci Mengapa Pendaraban Matriks NumPy Gagal dengan Ralat Penyiaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn