Memahami Broadcasting pada NumPy
Broadcasting adalah salah satu konsep terpenting dalam NumPy. Setelah sebelumnya kita belajar tentang struktur data, indexing (view), indexing (copy), dan vektorisasi, tibalah saatnya kita mempelajari konsep kelima: Broadcasting. Secara sederhana, konsep broadcasting sama dengan istilah broadcasting di bidang lain. Misalnya pada aplikasi pesan melalui Whatsapp, broadcasting pada aplikasi tersebut berarti mengirim pesan pada semua akun yang ada di daftar kontak kita. Pada NumPy array, broadcasting juga berlaku demikan. Nilai (misal: array 1x2) yang dikalikan pada array vektor (4x1), maka setiap elemen vektor tersebut akan dikalikan dengan nilai tadi (array 1x2).

Operasi perkalian yang melibatkan konsep 'broadcasting': setiap elemen pada vektor kiri (4x1) dikalikan dengan array di tengah (1x2), hasilnya array sebelah kanan (4x2) [1]
Pada tulisan sebelumnya, vektorisasi pada Numpy, teknik yang digunakan adalah broadcasting yang paling sederhana. Ketika menambahkan matrik a dengan skalar '1', broadcasting digunakan untuk vektorisasi skalar '1' tersebut menjadi matrik yang seukuran dengan a. Untuk operasi perkalian perhatikan contoh d bawah ini berdasarkan gambar di atas.
In [26]: e = np.array([[0], [3], [6], [9]]) In [27]: e * np.array(*[[1, 2]]) Out[27]: array([[ 0, 0], [ 3, 6], [ 6, 12], [ 9, 18]])
Untuk operasi broadcasting, setidaknya harus ada kompatibilitas antar aksisnya, bisa kolomnya, bisa barisnya, atau skalar. Seperti perkalian matrik, jika kedua matrik tidak kompatibel, maka tidak bisa dikalikan. Jika tidak memenuhi kriteria tersebut akan menyebabkan error. Lebih jelasnya, ikuti screencast berikut ini.
Penutup
Tutorial singkat ini menjelaskan teknik broadcasting -- menyebar 'pesan' ke seluruh elemen matrik/vektor. Dengan teknik broadcasting ini, operasi yang melibatkan matrik dengan jumlah besar (misal ribuan aksis) bisa dilakukan dengan mudah. Broadcasting secara pintar akan menambah aksis bila diperlukan dan menampilkan error yang berkesesuaian, misal jika ukuran baris dan kolom tidak sama pada operasi perkalian.
Referensi
- C. R. Harris et al., “Array Programming with NumPy,” Nature, vol. 585, no. September, pp. 357–362, 2020.