Broadcasting in Python: An Illustrated Guide
Broadcasting Illustration
This GIF demonstrates the internal mechanism of broadcasting
Broadcasting
-
NumPyoperations are carried out on pairs of arrays (or vectors) on an element-by-element basis. Thus it is important that dimensions of two arrays must be same (or for dot product the inner dimension should match). -
This constraint is relaxed in Python when one of the matrices is of shape (m x n). The other one has to be of a shape (1 x n) or (m X 1) or just a scalar number.
-
When it is (1 x n) matrix (row vector), then it gets replicated itself column-wise to become (m x n) matrix.
-
When it is (m x 1) matrix (column vector), it gets replicated row-wise to become (m x n) matrix.
-
If it is a scalar number, then it gets converted to (m x n) matrix where each of the element is equal to the scalar number.
-
-
Broadcasting also works when you want to apply the same function to each of the elements of a matrix or a vector. All you need to do is to just pass the matrix as an argument to the function.
Broadcasting Examples
1. Multiplication of a matrix and a row vector
a = np.array([[10, 10, 10], [20, 20, 20], [30, 30, 30]])
b = np.array([1, 2, 3])
c = a * b
print(c)
output:
[[10 20 30]
[20 40 60]
[30 60 90]]
2. Addition of a matrix and a scalar
a = np.array([[10, 10, 10], [20, 20, 20], [30, 30, 30]])
b = 1
c = a + b
print(c)
output:
[[11 11 11]
[21 21 21]
[31 31 31]]
3. Element-wise function call
def exp(x, n):
return x ** n
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(exp(a, 2))
output:
[[ 1 4 9]
[16 25 36]
[49 64 81]]
#Note that each element of array **a** has been raised to power 2
ndarray
-
A vector is an array of rank one (single dimension).
-
A vector or an array of vectors can be represented as
numpy.ndarray(n-dimensional array) object using NumPy'sarray()function. -
Following are the advantages of representing an array as numpy.ndarray object:
-
It supports broadcasting.
-
It provides lots of built-in functions to perform vectorized operations such as dot product, reshaping, and element-wise product.
-
-
If an ndarray is of shape
(m x 1), it is known as acolumn vectorand if it is of shape(1 x n), it is known as arow vector. -
If a matrix has one dimension
(m x 1)or(1 x m), it is calledrank 1matrix. If it has two dimensions of shape(m x n), wherem > 1andn > 1, it's calledrank 2matrix. In general, if a matrix hasndimensions, it's calledrank nmatrix.