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.
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ı.
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]]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.