Penyiaran dalam Numpy: Memahami Ralat "operand tidak dapat disiarkan bersama"
Pustaka numpy menyediakan struktur data dan operasi yang berkuasa untuk berangka pengiraan. Satu operasi biasa ialah pendaraban matriks, yang boleh dilakukan menggunakan operator *. Walau bagaimanapun, apabila cuba untuk mendarab dua tatasusunan dengan bentuk yang berbeza, anda mungkin menghadapi ralat berikut:
ValueError: operands could not be broadcast together with shapes (97,2) (2,1)
Untuk memahami ralat ini, kita mesti mendalami konsep penyiaran dalam numpy dahulu. Penyiaran membenarkan tatasusunan bentuk berbeza digunakan dalam operasi dengan mengembangkan atau mereplikasi dimensi untuk memadankan dimensi tatasusunan yang lain.
Dalam contoh yang disediakan, tatasusunan X mempunyai bentuk (97, 2), menunjukkan ia mempunyai 97 baris dan 2 lajur. Tatasusunan y mempunyai bentuk (2, 1), menunjukkan ia mempunyai 2 baris dan 1 lajur. Apabila melakukan X * y, ValueError dinaikkan kerana bentuk ini tidak boleh disiarkan bersama. Isu timbul kerana terdapat konflik dalam dimensi pertama: X mempunyai 97 elemen, manakala y hanya mempunyai 2. Penyiaran tidak dapat menyelesaikan konflik ini, jadi operasi gagal.
Sebagai alternatif, kita boleh menggunakan pengendali produk dot (numpy.dot) untuk pendaraban matriks. Produk dot direka khusus untuk pendaraban matriks dan mengendalikan penyiaran dengan betul. Dalam contoh yang diperbetulkan, X.dot(y) mengembalikan vektor dengan bentuk (97, 1), seperti yang dikehendaki.
Dengan memahami peraturan penyiaran dan menggunakan operator pendaraban matriks yang betul, kita boleh dengan berkesan lakukan operasi berangka dan elakkan ralat "operand tidak dapat disiarkan bersama" dalam numpy.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'operand tidak dapat disiarkan bersama' dalam NumPy dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!