Broadcasting
Table of Contents
NumPy Dasar-dasar Komputasi Numerik - This article is part of a series.
NumPy Broadcasting adalah fitur kuat yang memungkinkan operasi pada array dengan bentuk yang berbeda atau ukuran yang tidak sama. Dengan broadcasting, NumPy secara otomatis menyelaraskan dimensi array untuk menjalankan operasi yang seharusnya tidak valid. Mari kita eksplorasi lebih lanjut tentang konsep dan penggunaan broadcasting pada NumPy.
A. Konsep Dasar Broadcasting #
Broadcasting memungkinkan kita untuk melakukan operasi antara array yang memiliki bentuk yang berbeda atau dimensi yang tidak sama. NumPy akan secara otomatis menyelaraskan dimensi array agar operasi dapat dilakukan.
1. Broadcasting dengan Array Satu Dimensi dan Skalar #
import numpy as np
arr = np.array([1, 2, 3])
scalar = 2
# Broadcasting: Mengalikan array satu dimensi dengan skalar
result = arr * scalar
Hasil Print:
array([2, 4, 6])
Pada contoh di atas, skalar 2 secara otomatis disiarkan ke array satu dimensi [1, 2, 3], menghasilkan array [2, 4, 6].
2. Broadcasting dengan Array Dua Dimensi #
import numpy as np
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
row_vector = np.array([0.5, 1, 2])
# Broadcasting: Mengalikan array dua dimensi dengan vektor baris
result = arr_2d * row_vector
Hasil Print:
array([[0.5, 2. , 6. ],
[2. , 5. , 12. ]])
Pada contoh ini, vektor baris [0.5, 1, 2]
disiarkan ke setiap baris array dua dimensi, menghasilkan array baru.
B. Broadcasting pada Array Multi-dimensi #
Broadcasting dapat berlaku untuk array dengan dimensi lebih tinggi, asalkan dimensi yang sesuai di akhir array memiliki ukuran yang sama atau salah satunya memiliki ukuran 1.
1. Broadcasting dengan Array Tiga Dimensi #
import numpy as np
arr_3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
column_vector = np.array([[0.5], [2]])
# Broadcasting: Mengalikan array tiga dimensi dengan vektor kolom
result = arr_3d * column_vector
Hasil Print:
array([[[ 0.5, 1. , 1.5],
[ 8. , 10. , 12. ]],
[[ 3.5, 4. , 4.5],
[20. , 22. , 24. ]]])
Pada contoh ini, vektor kolom [[0.5], [2]]
disiarkan ke setiap kolom array tiga dimensi, menghasilkan array baru.
C. Broadcasting dengan Operasi Lebih Kompleks #
Broadcasting tidak terbatas pada operasi dasar seperti penjumlahan atau perkalian. Ini juga berlaku untuk operasi lebih kompleks.
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 10
# Broadcasting: Menggunakan fungsi numpy dengan array dan skalar
result = np.power(arr, 2) + np.sqrt(scalar)
Hasil Print:
array([[ 2. , 6. , 12. ],
[ 18. , 26. , 36.08276253]])
Pada contoh ini, kita menggunakan fungsi numpy np.power()
(pangkat dua) dan np.sqrt()
(akar kuadrat) pada array dan skalar secara bersamaan.
D. Broadcasting Error dan Resolusinya #
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
column_vector = np.array([[0.5], [2], [3]])
# Broadcasting Error
result = arr * column_vector
Error Message:
ValueError: operands could not be broadcast together with shapes (2,3) (3,1)
Dalam kasus ini, broadcasting tidak dapat dilakukan karena dimensi kedua array tidak memenuhi syarat. Kita dapat memperbaikinya dengan mengubah dimensi array menjadi bentuk yang sesuai.
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
column_vector = np.array([[0.5], [2]])
# Broadcasting dengan dimensi yang sesuai
result = arr * column_vector
Hasil Print:
array([[ 0.5, 1. , 1.5],
[ 8. , 10. , 12. ]])
Melalui konsep broadcasting, NumPy memungkinkan kita untuk melakukan operasi pada array dengan cara yang intuitif dan efisien, bahkan jika bentuk atau dimensi array tersebut tidak sama. Hal ini memberikan fleksibilitas besar dalam pengolahan data numerik.