Kode Perkalian Matriks Python
Lakukan perkalian matriks dengan Python murni tanpa ketergantungan. Jalankan perbandingan loop bersarang versus struktur yang dioptimalkan.
Ikhtisar
Perkalian matriks adalah operasi matematika dasar dalam aljabar linier, grafik komputer, dan pembelajaran mesin. Ini melibatkan pengambilan dua matriks dan menghasilkan matriks ketiga dengan menghitung perkalian titik baris dan kolom.
Untuk mengalikan matriks A dengan matriks B, jumlah kolom pada A harus sama dengan jumlah baris pada B. Matriks yang dihasilkan mempunyai dimensi baris A dan kolom B.
Dalam Python murni, perkalian matriks diimplementasikan menggunakan tiga loop bersarang. Meskipun mudah untuk ditulis, operasi O(n³) ini lambat, itulah sebabnya data scientist menggunakan mesin perpustakaan khusus sepertiNumPydalam produksi.
Kode & Output Eksekusi
Perkalian matriks Python murni menggunakan loop bersarang dan pemahaman daftar.
def multiply_matrices(A, B):
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
if cols_A != rows_B:
raise ValueError("Cannot multiply: column size of A must match row size of B.")
# Initialize result matrix with zeros
result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# Iterate through rows of A
for i in range(rows_A):
# Iterate through columns of B
for j in range(cols_B):
# Iterate through rows of B (or columns of A)
for k in range(cols_A):
result[i][j] += A[i][k] * B[k][j]
return result
# 2x3 Matrix A
matrix_A = [
[1, 2, 3],
[4, 5, 6]
]
# 3x2 Matrix B
matrix_B = [
[7, 8],
[9, 10],
[11, 12]
]
print("Matrix A (2x3):", matrix_A)
print("Matrix B (3x2):", matrix_B)
res = multiply_matrices(matrix_A, matrix_B)
print("Product (2x2):", res)Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]Implementasi Langkah demi Langkah
- Render grafik matematis dan rotasi koordinat
- Produk titik lapisan jaringan saraf tiruan sederhana
- Memahami struktur algoritmik dan loop bersarang
Pertanyaan yang Sering Diajukan
MengapaNumPymelakukan perkalian matriks jauh lebih cepat?
NumPyditulis dalam C dan menggunakan perpustakaan BLAS/LAPACK yang sangat optimal. Ini memanfaatkan vektorisasi, optimalisasi cache CPU, dan eksekusi paralel, yang tidak dapat dilakukan oleh loop Python standar.
Apa operator `@` di Python?
Dimulai denganPython 3.5, simbol `@` diperkenalkan sebagai operator infiks khusus untuk perkalian matriks, memungkinkan Anda menjalankan `A @ B` saat menggunakan array numpy.