Perkalian Matriks dengan np.matmul dan @
Kalikan matriks dengan benar menggunakan np.matmul dan operator @, lalu bedakan * per elemen dari perkalian matriks yang sebenarnya.
Perkalian Matriks dengan np.matmul dan @ adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Perkalian Matriks Penting
Perkalian matriks merupakan inti ilmu data dan pembelajaran mesin. Perkalian ini mendasari jaringan saraf, reduksi dimensi, dan transformasi linear. Dalam Python, NumPy menyediakan dua cara praktis untuk mengalikan matriks: fungsi np.matmul() dan operator @ yang diperkenalkan pada Python 3.5. Keduanya cepat, tervectorisasi, dan jauh lebih efisien daripada loop Python bertingkat.
Aturan Perkalian Matriks
Untuk dua matriks A dan B, hasil kali A @ B hanya valid jika jumlah kolom pada A sama dengan jumlah baris pada B. Jika A berbentuk (m, n) dan B berbentuk (n, k), hasilnya berbentuk (m, k). Aturan ini disebut batasan dimensi dalam dan berlaku terlepas dari fungsi NumPy yang digunakan.
import numpy as np
A = np.array([[1, 2], [3, 4]]) # shape (2, 2)
B = np.array([[5, 6], [7, 8]]) # shape (2, 2)
C = A @ B
print(C) # [[19 22] [43 50]]np.matmul vs Operator @
np.matmul(A, B) dan A @ B menghasilkan hasil yang identik untuk array 2-D. Operator @ hanyalah gula sintaksis — operator ini memanggil __matmul__ di balik layar, yang diimplementasikan NumPy menggunakan rutin BLAS tingkat-C yang sama. Gunakan @ dalam kode sehari-hari agar mudah dibaca; gunakan np.matmul ketika Anda ingin meneruskan fungsi sebagai callable atau menangani kasus khusus secara eksplisit.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.matmul(A, B)) # same as A @ B
print(A @ B) # same resultMembedakan @ dari * dan np.dot
NumPy memiliki tiga fungsi perkalian yang mudah tertukar. A * B adalah perkalian per elemen (hasil kali Hadamard). np.dot(A, B) berperilaku seperti np.matmul untuk array 2-D, tetapi memiliki semantik yang berbeda untuk dimensi yang lebih tinggi. A @ B secara khusus merupakan perkalian matriks dan mengikuti definisi matematis dengan tepat — pilihlah ini daripada np.dot untuk pekerjaan yang melibatkan matriks.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print('element-wise:', A * B) # [[5 12] [21 32]]
print('matmul:', A @ B) # [[19 22] [43 50]]Perkalian Matriks Tidak Komutatif
Berbeda dari perkalian skalar, perkalian matriks tidak komutatif: A @ B umumnya berbeda dari B @ A. Bentuk dimensinya bahkan mungkin tidak kompatibel untuk kedua arah. Hal ini penting saat menulis transformasi — urutan operasi mengubah hasilnya. Selalu perhatikan matriks mana yang berada di kiri dan mana yang berada di kanan.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[0, 1], [1, 0]])
print('A @ B:', A @ B) # [[2 1] [4 3]]
print('B @ A:', B @ A) # [[3 4] [1 2]] -- different!Perkalian Matriks dalam Batch
Ketika array Anda memiliki lebih dari dua dimensi, np.matmul dan @ memperlakukan dimensi terdepan tambahan sebagai dimensi batch dan mengalikan matriks secara paralel. Misalnya, array berbentuk (32, 3, 4) yang dikalikan dengan array berbentuk (32, 4, 5) menghasilkan hasil berbentuk (32, 3, 5) — 32 perkalian independen 3×4 @ 4×5 sekaligus. Inilah cara kerangka kerja pembelajaran mendalam memproses batch mini secara efisien.
import numpy as np
batch_A = np.random.rand(32, 3, 4)
batch_B = np.random.rand(32, 4, 5)
result = batch_A @ batch_B
print(result.shape) # (32, 3, 5)Perkalian Matriks-Vektor
Salah satu kasus khusus yang umum adalah mengalikan matriks dengan vektor. Jika A berbentuk (m, n) dan v adalah array 1-D dengan panjang n, maka A @ v menghasilkan array 1-D dengan panjang m. NumPy menangani penyelarasan bentuk secara otomatis — Anda tidak perlu mengubah bentuk v menjadi vektor kolom. Pola ini muncul di berbagai tempat: menerapkan bobot dalam regresi linear, memproyeksikan fitur, dan menghitung hasil kali titik untuk setiap baris secara bersamaan.
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]]) # (2, 3)
v = np.array([1, 0, -1]) # (3,)
print(A @ v) # [1-3, 4-6] = [-2, -2]Kinerja: @ vs Loop Python
Perkalian matriks NumPy memanggil rutin BLAS/LAPACK yang dioptimalkan dan berjalan dalam kode C terkompilasi. Loop bertingkat Python murni yang menerapkan operasi yang sama biasanya 100–1000× lebih lambat untuk matriks berukuran besar. Saat Anda memerlukan hasil kali matriks berulang dalam pipeline data — transformasi fitur, proyeksi PCA, pembaruan bobot — selalu gunakan @ atau np.matmul dan jangan pernah mengimplementasikan loop bagian dalamnya sendiri.
import numpy as np, time
A = np.random.rand(500, 500)
B = np.random.rand(500, 500)
t0 = time.time()
C = A @ B
print(f'NumPy: {(time.time()-t0)*1000:.1f} ms') # single-digit msMerangkai Beberapa Hasil Kali Matriks
Anda dapat merangkai beberapa operasi @ dalam satu ekspresi: A @ B @ C dievaluasi dari kiri ke kanan. NumPy tidak mengoptimalkan urutan perkalian secara otomatis (berbeda dari MATLAB dengan mtimes), sehingga jika ukuran matriks sangat berbeda, urutannya dapat memengaruhi kecepatan. Untuk tiga matriks atau lebih, pertimbangkan penggunaan np.linalg.multi_dot([A, B, C]), yang secara otomatis memilih pasangan paling efisien.
import numpy as np
A = np.random.rand(100, 20)
B = np.random.rand(20, 50)
C = np.random.rand(50, 10)
result = np.linalg.multi_dot([A, B, C])
print(result.shape) # (100, 10)Kesalahan Bentuk yang Umum dan Cara Memperbaikinya
Kesalahan yang paling umum dalam perkalian matriks adalah ketidakcocokan bentuk: ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0. Solusinya adalah memeriksa bentuk dengan A.shape dan memastikan dimensi bagian dalamnya sesuai. Jika Anda memiliki vektor baris berbentuk (n,) yang perlu diperlakukan sebagai vektor kolom berbentuk (n, 1), gunakan v.reshape(-1, 1). Jika Anda memerlukan transpose, gunakan A.T.
import numpy as np
A = np.ones((3, 4))
B = np.ones((3, 4)) # wrong -- inner dims 4 != 3
try:
A @ B
except ValueError as e:
print('Error:', e)
print('Fix:', (A @ B.T).shape) # (3, 3)Contoh Praktis: Transformasi Fitur
Contoh penggunaan umum dalam ilmu data: Anda memiliki kumpulan data X berbentuk (n_samples, n_features) dan matriks bobot W berbentuk (n_features, n_outputs). Hasil kali matriks X @ W menerapkan transformasi linear pada setiap sampel secara bersamaan dan menghasilkan bentuk (n_samples, n_outputs). Ini merupakan perhitungan inti pada lapisan linear dalam jaringan saraf dan pada prediksi regresi linear.
import numpy as np
n_samples, n_features, n_outputs = 200, 10, 3
X = np.random.rand(n_samples, n_features)
W = np.random.rand(n_features, n_outputs)
b = np.zeros(n_outputs)
predictions = X @ W + b # shape (200, 3)
print(predictions.shape)Pemeriksaan Singkat
Uji pemahaman Anda tentang perkalian matriks NumPy.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa: np.matmul dan @ menerapkan perkalian matriks yang sebenarnya (bukan perkalian per elemen), dimensi bagian dalam dari kedua matriks harus cocok, dan @ mendukung perkalian secara berkelompok pada dimensi awal. Selanjutnya kita akan membahas determinan, invers, dan transpose—operasi yang menunjukkan apakah suatu matriks dapat "dibatalkan".
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Perkalian Matriks dengan np.matmul dan @” gratis?
Ya — teks lengkap “Perkalian Matriks dengan np.matmul dan @” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Perkalian Matriks dengan np.matmul dan @”?
Kalikan matriks dengan benar menggunakan np.matmul dan operator @, lalu bedakan * per elemen dari perkalian matriks yang sebenarnya. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Perkalian Matriks dengan np.matmul dan @” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Perkalian Matriks dengan np.matmul dan @
- Determinan, Invers, dan Transpos
- Menyelesaikan Sistem Linear
- Gambaran Umum Nilai Eigen dan SVD