Program Python untuk Mendarab Dua Matriks

Dalam contoh ini, kita akan belajar memperbanyak matriks menggunakan dua cara yang berbeza: gelung bersarang dan

Untuk memahami contoh ini, anda harus mempunyai pengetahuan mengenai topik pengaturcaraan Python berikut:

  • Python untuk Gelung
  • Senarai Python
  • Matriks Python dan Susunan NumPy

Di Python, kita dapat menerapkan matriks sebagai senarai bersarang (senarai di dalam senarai).

Kita boleh memperlakukan setiap elemen sebagai baris matriks.

Contohnya X = ((1, 2), (4, 5), (3, 6))akan mewakili 3x2matriks.

Baris pertama boleh dipilih sebagai X(0). Dan, elemen di baris pertama, lajur pertama boleh dipilih sebagai X(0)(0).

Pendaraban dua matriks X dan Y ditakrifkan hanya jika bilangan lajur di X sama dengan bilangan baris Y.

Sekiranya X adalah n x mmatriks dan Y adalah m x lmatriks maka, XY ditakrifkan dan mempunyai dimensi n x l(tetapi YX tidak ditentukan). Berikut adalah beberapa cara untuk melaksanakan pendaraban matriks di Python.

Kod Sumber: Pendaraban Matriks menggunakan Nested Loop

# Program to multiply two matrices using nested loops # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((0,0,0,0), (0,0,0,0), (0,0,0,0)) # iterate through rows of X for i in range(len(X)): # iterate through columns of Y for j in range(len(Y(0))): # iterate through rows of Y for k in range(len(Y)): result(i)(j) += X(i)(k) * Y(k)(j) for r in result: print(r) 

Pengeluaran

 (114, 160, 60, 27) (74, 97, 73, 14) (119, 157, 112, 23) 

Dalam program ini, kami telah menggunakan forgelung bersarang untuk melancarkan setiap baris dan setiap lajur. Kami mengumpulkan jumlah produk dalam hasilnya.

Teknik ini mudah tetapi mahal secara komputasi kerana kami meningkatkan susunan matriks.

Untuk operasi matriks yang lebih besar, kami mengesyorkan pakej perisian yang dioptimumkan seperti NumPy yang beberapa kali (dalam urutan 1000) kali lebih cepat daripada kod di atas.

Kod Sumber: Pendaraban Matriks Menggunakan Pemahaman Senarai Bersarang

# Program to multiply two matrices using list comprehension # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)) for X_row in X) for r in result: print(r) 

Keluaran program ini sama seperti di atas. Untuk memahami kod di atas, kita mesti mengetahui terlebih dahulu mengenai fungsi terbina dalam zip()dan membongkar senarai argumen menggunakan * operator.

Kami telah menggunakan pemahaman senarai bersarang untuk mengulangi setiap elemen dalam matriks. Kodnya kelihatan rumit dan tidak dapat dibaca pada mulanya. Tetapi setelah anda memahami senarai, anda mungkin tidak akan kembali ke gelung bersarang.

Artikel menarik...