We use np.broadcast_to() to stretch a smaller array to a bigger shape without copying data. This helps when you want to do math with arrays of different sizes.
You have a small array and want to match the shape of a bigger array for calculations.
You want to repeat data logically without making a full copy in memory.
You need to prepare arrays for element-wise operations in machine learning.
You want to avoid writing loops by using array broadcasting explicitly.
You want to understand how NumPy handles arrays of different shapes.
Syntax
NumPy
np.broadcast_to(array, shape, subok=False)
array is the input array you want to broadcast.
shape is the new shape you want to broadcast to. It must be compatible.
Examples
This repeats the 1D array x into a 3x3 array by broadcasting.
NumPy
import numpy as np
x = np.array([1, 2, 3])
y = np.broadcast_to(x, (3, 3))
print(y)
Broadcast a 3x1 array to 3x4 by repeating the single column.
NumPy
a = np.array([[1], [2], [3]])
b = np.broadcast_to(a, (3, 4))
print(b)
Sample Program
This code shows how a 1D array of length 2 is broadcasted to a 3x2 array. The values are repeated logically without copying.
NumPy
import numpy as np
# Original small array
arr = np.array([10, 20])
# Broadcast to a bigger shape
broadcasted_arr = np.broadcast_to(arr, (3, 2))
print("Original array shape:", arr.shape)
print("Broadcasted array shape:", broadcasted_arr.shape)
print("Broadcasted array:")
print(broadcasted_arr)
OutputSuccess
Important Notes
The new shape must be compatible with the original array shape, or you get an error.
np.broadcast_to() does not copy data, so it is memory efficient.
Broadcasted arrays are read-only to avoid accidental changes.
Summary
np.broadcast_to() stretches arrays to bigger shapes for easy math.
It repeats data logically without copying, saving memory.
Use it when you want to prepare arrays for element-wise operations.
Practice
(1/5)
1. What does np.broadcast_to() do in NumPy?
easy
A. It sorts the elements of an array in ascending order.
B. It removes duplicate elements from an array.
C. It stretches an array to a larger shape without copying data.
D. It converts an array into a list.
Solution
Step 1: Understand the purpose of np.broadcast_to()
This function is used to stretch an array to a bigger shape so it can be used in element-wise operations with other arrays.
Step 2: Compare with other options
Sorting, removing duplicates, or converting to list are unrelated to broadcasting.
Final Answer:
It stretches an array to a larger shape without copying data. -> Option C
Quick Check:
Broadcasting = Stretch array shape [OK]
Hint: Broadcasting means stretching shape, not sorting or converting [OK]
Common Mistakes:
Confusing broadcasting with sorting or reshaping
Thinking it copies data instead of reusing
Mixing it up with array conversion functions
2. Which of the following is the correct syntax to broadcast array a to shape (3, 4)?
easy
A. np.broadcast_to(a, (3, 4))
B. np.broadcast(a, shape=(3, 4))
C. np.broadcast_to(a, shape=3, 4)
D. np.broadcast(a, (3, 4))
Solution
Step 1: Recall the function signature
The correct function is np.broadcast_to(array, shape) where shape is a tuple.
Step 2: Check each option
np.broadcast_to(a, (3, 4)) matches the correct syntax. np.broadcast_to(a, shape=3, 4) incorrectly uses shape=3, 4 without tuple (int shape invalid). Options B and D use a non-existent np.broadcast function.
Thinking broadcasting repeats columns instead of rows
Expecting a flattened array
Assuming an error due to shape mismatch
4. What is wrong with this code?
import numpy as np
arr = np.array([1, 2])
result = np.broadcast_to(arr, (3, 3))
print(result)
medium
A. ValueError because shape (3, 3) is incompatible with input shape (2,).
B. SyntaxError due to missing parentheses.
C. TypeError because broadcast_to expects a list, not an array.
D. No error; output is a 3x3 array with repeated rows.
Solution
Step 1: Check input and target shapes
The input array has shape (2,), but the target shape is (3, 3). Broadcasting requires the input shape to be compatible with the target shape.
Step 2: Understand broadcasting rules
Since 2 does not match 3 in the last dimension, broadcasting cannot stretch (2,) to (3, 3). This causes a ValueError.
Final Answer:
ValueError because shape (3, 3) is incompatible with input shape (2,). -> Option A
Quick Check:
Shape mismatch causes ValueError [OK]
Hint: Broadcast shapes must be compatible; check dimensions carefully [OK]
Common Mistakes:
Assuming broadcasting always works regardless of shape
Confusing ValueError with TypeError
Ignoring dimension mismatch
5. You have a 1D array a = np.array([5]) and want to create a 3x4 array where every element is 5 using np.broadcast_to(). Which code correctly achieves this?
hard
A. np.broadcast_to(a, (4, 3))
B. np.broadcast_to(a, (3, 4))
C. np.broadcast_to(a, (3,))
D. np.broadcast_to(a, (5, 5))
Solution
Step 1: Identify the input and desired output shape
The input is a 1D array with shape (1,), and the desired output shape is (3, 4).
Step 2: Apply broadcasting rules
Broadcasting can stretch (1,) to (3, 4) by repeating the single value 5 across all elements.
Step 3: Check options
np.broadcast_to(a, (3, 4)) correctly uses np.broadcast_to(a, (3, 4)). np.broadcast_to(a, (4, 3)) swaps dimensions, which is not the requested shape. np.broadcast_to(a, (3,)) is only 1D, and np.broadcast_to(a, (5, 5)) has wrong shape.
Final Answer:
np.broadcast_to(a, (3, 4)) -> Option B
Quick Check:
Broadcast single value to (3,4) with np.broadcast_to [OK]
Hint: Broadcast single-element array to target shape tuple [OK]
Common Mistakes:
Mixing up shape dimensions order
Using wrong target shape tuple
Trying to broadcast to incompatible shapes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.