Kode Perkalian Matriks Python

Lakukan perkalian matriks dengan Python murni tanpa ketergantungan. Jalankan perbandingan loop bersarang versus struktur yang dioptimalkan.

Coba di Editor

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.

matrix_mult.py
Coba di Editor
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)
Keluaran Terminal
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.

Topik Terkait