Python Matris Çarpım Kodu

Bağımlılıklar olmadan saf Python'da matris çarpımını gerçekleştirin. İç içe döngüler ile optimize edilmiş yapılar arasındaki karşılaştırmamızı çalıştırın.

Editör'de deneyin

Genel Bakış

Matris çarpımı doğrusal cebir, bilgisayar grafikleri ve makine öğreniminde temel bir matematiksel işlemdir. İki matris almayı ve satır ve sütunların nokta çarpımlarını hesaplayarak üçüncü bir matris üretmeyi içerir.

A matrisini B matrisiyle çarpmak için A'daki sütun sayısı B'deki satır sayısına eşit olmalıdır. Ortaya çıkan matris, A'nın satırlarının ve B'nin sütunlarının boyutlarına sahiptir.

Saf Python'da matris çarpımı üç iç içe döngü kullanılarak uygulanır. Yazılması kolay olmasına rağmen bu O(n³) işlemi yavaştır; bu nedenle veri bilimcileri üretimdeNumPygibi özel kütüphane motorları kullanır.

Kod ve Yürütme Çıkışı

İç içe döngüler ve liste anlama kullanarak saf Python matris çarpımı.

matrix_mult.py
Editör'de deneyin
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)
Terminal Çıkışı
Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]

Adım Adım Uygulama

  • Matematiksel grafik oluşturma ve koordinat rotasyonları
  • Basit yapay sinir ağı katmanı nokta ürünleri
  • Algoritmik yapıları ve iç içe geçmiş döngüleri anlama

Sıkça Sorulan Sorular

NumPyneden matris çarpımını bu kadar hızlı gerçekleştiriyor?

NumPyC dilinde yazılmıştır ve yüksek düzeyde optimize edilmiş BLAS/LAPACK kitaplıklarını kullanır. Standart Python döngülerinin yapamadığı vektörleştirme, CPU önbellek optimizasyonları ve paralel yürütme avantajlarından yararlanır.

Python'daki '@' operatörü nedir?

Python 3.5 ile başlayarak, `@` sembolü, matris çarpımı için özel bir infix operatörü olarak tanıtıldı ve numpy dizileri kullanırken `A @ B`yi çalıştırmanıza izin verdi.

İlgili Konular