Topik ini membahas tiga operasi dasar pada matriks, yaitu penjumlahan, perkalian skalar, dan transpos. Ketiganya bekerja pada tingkat elemen sehingga hasilnya dapat diverifikasi dengan tangan maupun dengan NumPy. Setiap aturan ukuran dibahas lebih dahulu, kemudian ketiga operasi dijalankan sekaligus pada satu contoh catatan suhu. Setelah topik ini selesai, operasi dasar matriks dapat ditulis dalam notasi matematika sekaligus dijalankan dalam kode.
Penjumlahan dan pengurangan per elemen#
Penjumlahan matriks menjumlahkan dua matriks berukuran sama pada setiap pasangan posisi. Apabila dan sama-sama berukuran , hasilnya adalah matriks berukuran dengan setiap elemen mengikuti aturan berikut.
Aturan ukuran tersebut bersifat ketat, yaitu dua matriks hanya dapat dijumlahkan apabila banyaknya baris dan banyaknya kolom sama. Pengurangan bekerja dengan cara yang persis sama tetapi tandanya berbeda, sehingga selisih dua catatan suhu langsung memberikan kenaikan suhu pada setiap sel. Sifat komutatif juga berlaku, yakni sama dengan , karena penjumlahan bilangan pada setiap sel tidak terpengaruh urutan. Contoh penerapannya menggunakan catatan suhu dua ruangan yang diukur pada pagi dan siang hari selama tiga hari, dengan baris menyatakan ruangan dan kolom menyatakan hari.
Perkalian skalar#
Perkalian skalar mengalikan setiap elemen matriks dengan satu bilangan. Apabila bilangan dikalikan dengan matriks , hasilnya adalah matriks baru berukuran sama, dengan elemen pada setiap posisi. Operasi ini menaikkan atau menurunkan seluruh isi matriks secara merata, sebagaimana menggandakan seluruh catatan suhu atau menjadikan seluruh nilai setengah dari semula. Urutan faktor tidak berpengaruh karena perkalian bilangan bersifat komutatif, sehingga sama dengan hasil yang dikalikan 2.
Perlu ditegaskan bahwa perkalian skalar berbeda dari perkalian dua matriks. Perkalian dua matriks tidak mengalikan sel yang sejajar, melainkan mengikuti aturan baris-demi-kolom yang dibahas tersendiri karena lebih rumit. Anggapan bahwa keduanya sama sering menjadi sumber hasil perhitungan yang tidak terduga pada kode numerik. Penanda operasinya pun berbeda pada NumPy, yaitu * untuk perkalian skalar atau per elemen, dan @ untuk perkalian matriks.
Transpos#
Transpos (transpose) menukar posisi baris dan kolom sebuah matriks. Elemen pada baris ke- dan kolom ke- berpindah menjadi elemen pada baris ke- dan kolom ke-, sehingga matriks berubah menjadi matriks . Notasinya adalah huruf sebagai pangkat, dan aturannya ditulis sebagai berikut.
Sifat kedua pada rumus di atas berarti transpos dua kali mengembalikan matriks ke bentuk semula, sebagaimana membuka lalu menutup sebuah lipatan. Operasi ini sering muncul pada kode karena orientasi data tidak seragam antarpustaka, misalnya satu pustaka menata data sebagai baris sampel sedangkan pustaka lain menatanya sebagai kolom sampel. Transpos menjembatani kedua orientasi tersebut tanpa menyalin data secara manual. Diagram berikut memperlihatkan perubahan posisi setiap elemen pada hasil penjumlahan catatan suhu.
Ketiga operasi dalam NumPy#
Ketiga operasi tersebut diterjemahkan ke dalam NumPy dengan penanda yang ringkas, yaitu + untuk penjumlahan, - untuk pengurangan, * untuk perkalian skalar, dan atribut .T untuk transpos. Contoh berikut menggunakan catatan suhu dua ruangan pada pagi dan siang hari, lalu menjalankan keempat operasinya sekaligus.
import numpy as np
# catatan suhu dua ruangan selama tiga hari: baris = ruangan, kolom = hari
pagi = np.array([
[24.0, 26.0, 25.0],
[22.0, 23.0, 24.0],
])
siang = np.array([
[27.0, 29.0, 28.0],
[25.0, 26.0, 27.0],
])
jumlah = pagi + siang # penjumlahan per elemen
selisih = siang - pagi # pengurangan per elemen
dua_kali = 2 * pagi # perkalian skalar
transpos = jumlah.T # transpos: baris menjadi kolom
print("pagi + siang:")
print(jumlah)
print("siang - pagi:")
print(selisih)
print("2 * pagi:")
print(dua_kali)
print("transpos dari (pagi + siang):")
print(transpos)
print(f"ukuran jumlah : {jumlah.shape}")
print(f"ukuran transposnya : {transpos.shape}")pagi + siang:
[[51. 55. 53.]
[47. 49. 51.]]
siang - pagi:
[[3. 3. 3.]
[3. 3. 3.]]
2 * pagi:
[[48. 52. 50.]
[44. 46. 48.]]
transpos dari (pagi + siang):
[[51. 47.]
[55. 49.]
[53. 51.]]
ukuran jumlah : (2, 3)
ukuran transposnya : (3, 2)Penjumlahan pagi + siang menjumlahkan sel yang sejajar, sehingga ruangan pertama pada hari Senin menjadi . Pengurangan menghasilkan matriks berisi 3 pada semua sel karena suhu siang pada contoh ini selalu lebih tinggi tiga derajat daripada suhu pagi. Perkalian skalar 2 * pagi menggandakan setiap elemen, sedangkan atribut .T mengubah matriks menjadi sebagaimana diagram sebelumnya. Seluruh operasi berlangsung pada semua elemen sekaligus tanpa perulangan eksplisit.
Di mana hal ini ditemui dalam kode#
Ketiga operasi di atas menjadi bahan penyusun perhitungan yang jauh lebih besar dalam kode numerik. Mengenali polanya mempermudah pembacaan kode milik orang lain karena operasinya jarang diberi keterangan. Beberapa tempat yang mudah ditemui adalah sebagai berikut:
- Selisih antara hasil prediksi dan nilai sebenarnya pada evaluasi model machine learning dihitung sebagai pengurangan matriks per elemen.
- Rata-rata sekelompok citra dihitung dengan menjumlahkan banyak matriks citra lalu mengalikan hasilnya dengan skalar .
- Akumulasi koreksi bobot selama pelatihan model menjumlahkan banyak matriks kecil secara berurutan.
- Transpos muncul saat orientasi data ditukar, misalnya mengubah data baris-sampel menjadi kolom-fitur agar sesuai dengan fungsi pustaka tertentu.
- Penskalaan nilai, misalnya mengubah rentang suhu atau menormalkan piksel, merupakan perkalian skalar pada seluruh elemen matriks.
Seluruh pola tersebut mempertahankan ukuran matriksnya, kecuali transpos yang menukar letak dimensinya. Karena itu, pemeriksaan shape sebelum dan sesudah operasi menjadi kebiasaan yang berguna ketika hasil tidak sesuai dugaan. Pesan error penjumlahan yang tidak cocok pada NumPy juga mencantumkan ukuran kedua array, sehingga kebiasaan tersebut mempercepat pencarian penyebabnya.
Ringkasan#
- Penjumlahan dan pengurangan matriks bekerja per elemen dan mensyaratkan kedua matriks berukuran sama.
- Perkalian skalar mengalikan setiap elemen dengan satu bilangan tanpa mengubah ukuran matriks.
- Transpos menukar baris menjadi kolom, mengubah ukuran menjadi , dan dua kali transpos mengembalikan bentuk semula.
- NumPy menuliskan ketiganya dengan
+,*, dan.T, sedangkan@disediakan khusus untuk perkalian matriks.
Referensi#
- NumPy 2.1 documentation — NumPy project
— Dokumentasi operasi aritmetika array, atribut
T, dan aturan broadcasting yang digunakan pada contoh topik ini. - Mathematics for Machine Learning — Cambridge University Press — Bab aljabar linear merangkum sifat-sifat penjumlahan, perkalian skalar, dan transpos matriks.
- OpenStax — OpenStax — Koleksi buku teks terbuka yang memuat bab matriks beserta operasi dasarnya untuk latihan tambahan.