Broadcasting lets you do math between arrays of different sizes easily. It saves time and code by automatically expanding smaller arrays.
Scalar and array broadcasting in NumPy
import numpy as np # Example: Add scalar to array array = np.array([1, 2, 3]) scalar = 5 result = array + scalar # Example: Add arrays with broadcasting array1 = np.array([[1, 2, 3], [4, 5, 6]]) array2 = np.array([10, 20, 30]) result = array1 + array2
Broadcasting happens automatically when shapes are compatible.
A scalar is treated like an array with shape ().
import numpy as np # Scalar added to array array = np.array([1, 2, 3]) scalar = 10 result = array + scalar print(result)
import numpy as np # Adding 1D array to 2D array array_2d = np.array([[1, 2, 3], [4, 5, 6]]) array_1d = np.array([10, 20, 30]) result = array_2d + array_1d print(result)
import numpy as np # Edge case: empty array empty_array = np.array([]) scalar = 5 result = empty_array + scalar print(result)
import numpy as np # Edge case: single element array single_element_array = np.array([100]) scalar = 3 result = single_element_array * scalar print(result)
This program shows how a 1D array is added to each row of a 2D array by broadcasting. It also shows adding a scalar to every element.
import numpy as np # Create a 2D array array_2d = np.array([[1, 2, 3], [4, 5, 6]]) print("Original 2D array:") print(array_2d) # Create a 1D array to broadcast array_1d = np.array([10, 20, 30]) print("\n1D array to broadcast:") print(array_1d) # Add 1D array to 2D array using broadcasting result_add = array_2d + array_1d print("\nResult of adding 1D array to 2D array:") print(result_add) # Add scalar to 2D array scalar_value = 5 result_scalar = array_2d + scalar_value print("\nResult of adding scalar to 2D array:") print(result_scalar)
Time complexity is O(n) where n is number of elements in the largest array.
Space complexity depends on the output array size, usually same as the largest input array.
Common mistake: shapes must be compatible for broadcasting, otherwise error occurs.
Use broadcasting to avoid writing loops and make code faster and cleaner.
Broadcasting lets you do math between arrays of different shapes easily.
Scalars act like arrays with no dimensions and can be combined with any array.
Always check array shapes to ensure broadcasting will work without errors.
Practice
Solution
Step 1: Understand scalar and array addition
A scalar is treated as an array with no dimensions and can be added to each element of the array.Step 2: Apply broadcasting rules
Broadcasting repeats the scalar value to match the shape of the array, adding it element-wise.Final Answer:
The scalar is added to each element of the array. -> Option AQuick Check:
Scalar + array = element-wise addition [OK]
- Thinking scalar is ignored
- Expecting shape mismatch error
- Assuming scalar replaces array
arr?Solution
Step 1: Recall NumPy scalar addition syntax
Adding a scalar to an array is done simply by using the plus operator:arr + scalar.Step 2: Evaluate options
arr + 5 usesarr + 5, which is correct. arr.add(5) is invalid syntax. add(arr, 5) is not a NumPy function. arr + [5] tries to add a list, which changes behavior.Final Answer:
arr + 5 -> Option BQuick Check:
Usearr + scalarfor scalar addition [OK]
- Using method .add() which doesn't exist
- Passing scalar inside a list
- Using non-existent add() function
import numpy as np arr = np.array([1, 2, 3]) result = arr * 3 print(result)
Solution
Step 1: Understand scalar multiplication with array
Multiplying an array by a scalar multiplies each element by that scalar.Step 2: Calculate element-wise multiplication
Each element in[1, 2, 3]is multiplied by 3, resulting in[3, 6, 9].Final Answer:
[3 6 9] -> Option DQuick Check:
Array * scalar = element-wise multiplication [OK]
- Expecting concatenation instead of multiplication
- Thinking output is repeated elements
- Assuming error due to shape mismatch
import numpy as np arr = np.array([1, 2, 3]) scalar = np.array([5]) result = arr + scalar print(result)
Solution
Step 1: Check shapes of arrays
arrshape is (3,),scalarshape is (1,). Broadcasting allows (1,) to expand to (3,).Step 2: Apply broadcasting addition
Each element ofarris added to 5, resulting in[6, 7, 8].Final Answer:
No error; output is [6 7 8] -> Option CQuick Check:
Broadcasting works with (3,) + (1,) arrays [OK]
- Assuming scalar must be a plain number
- Thinking shape mismatch causes error
- Expecting concatenation instead of addition
arr = np.array([[1, 2, 3], [4, 5, 6]]), what is the result of arr + np.array([10, 20, 30])?Solution
Step 1: Analyze shapes for broadcasting
arrshape is (2,3), andnp.array([10, 20, 30])shape is (3,). The second array broadcasts across rows.Step 2: Perform element-wise addition row-wise
Each row ofarradds the vector[10, 20, 30]element-wise, resulting in[[11, 22, 33], [14, 25, 36]].Final Answer:
[[11 22 33] [14 25 36]] -> Option AQuick Check:
Broadcast vector added to each row [OK]
- Expecting error due to different shapes
- Adding vector only to first row
- Confusing addition with concatenation
Ready to prove it?
Pass the test and this pattern moves unknown
