Konsep python yang agak susah dipahami adalah operasi broadcasting.
Operasi broadcasting merupakan "menyebar" pesan ke seluruh elemen matrik. Contoh
sederhana, matrik c saya tambahkan dengan '5', maka semua elemen dalam matrik c
akan ditambah dengan nilai 5. Operasi ini, sesuai konsep vektorisasi Numpy, akan
jauh lebih cepat dari loop `for'. Syarat operasi broadcasting ini adalah
setidaknya harus ada kompatibilitas antar aksisnya, bisa kolomnya, bisa
barisnya, atau skalar. Misalnya matrik c dengan ukuran (3, 3) bisa kita tambah dengan [1,
2, 3] tapi tidak dengan [1, 2, 3, 4].
>>> c = np.array([[ 5, 8, 11],
[ 6, 9, 12],
[ 7, 10, 13]])
>>> c + [1, 2, 3] # bisa juga dengan list langsung
array([[1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]])
>>> c + np.array([1, 2, 3, 4])
------------------------------------------
ValueError Traceback (most recent call last)
< ipython-input-42-d334d3cf449e> in < module >
----> 1 c + np.array([1, 2, 3, 4])
ValueError: operands could not be broadcast together
with shapes (3,3) (4,)
Contoh lain adalah penjumlahan vektor kolom [1, 2, 3] dengan vektor baris [1, 2, 3]. Contoh ini menunjukkan betapa menariknya operasi broadcasting, kolom dijumlah dengan baris. Pada kolom pertama hasilnya menjadi [2, 3, 4], tiap elemen vektor kolom ditambah 1. Pada kolom 2 tiap elemen vektor kolom ditambah 2, dan pada elemen 3 tiap elemen vektor kolom ditambah dengan 3.
>>> np.array([1, 2, 3])[:, np.newaxis]+np.array([1, 2, 3])
array([[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
Tulisan ini melengkapi tulisan
ini.