Bird
Raised Fist0
NumPydata~20 mins

Matrix multiplication with @ operator in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Matrix Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this matrix multiplication?
Given two numpy arrays A and B, what is the result of A @ B?
NumPy
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[2, 0], [1, 2]])
result = A @ B
print(result)
A
[[4 2]
 [7 8]]
B
[[4 4]
 [10 8]]
C
[[2 4]
 [3 8]]
D
[[2 0]
 [1 2]]
Attempts:
2 left
💡 Hint
Remember matrix multiplication sums the products of rows of A with columns of B.
❓ data_output
intermediate
1:30remaining
What is the shape of the result after matrix multiplication?
If A has shape (3, 4) and B has shape (4, 2), what is the shape of A @ B?
NumPy
import numpy as np
A = np.zeros((3,4))
B = np.zeros((4,2))
result = A @ B
print(result.shape)
A(3, 4)
B(4, 4)
C(2, 3)
D(3, 2)
Attempts:
2 left
💡 Hint
The resulting matrix shape is rows of A by columns of B.
🔧 Debug
advanced
2:00remaining
Why does this matrix multiplication raise an error?
What error will this code raise and why?
NumPy
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8], [9, 10]])
result = A @ B
AIndexError: index out of bounds
BTypeError: unsupported operand type(s) for @: 'list' and 'ndarray'
CValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)
DNo error, outputs a (2,2) matrix
Attempts:
2 left
💡 Hint
Check if the inner dimensions of the matrices match for multiplication.
🚀 Application
advanced
2:30remaining
Calculate the product of a matrix and its transpose
Given matrix M, what is the result of M @ M.T?
NumPy
import numpy as np
M = np.array([[1, 2], [3, 4], [5, 6]])
result = M @ M.T
print(result)
A
[[ 1 3 5]
 [ 2 4 6]]
B
[[ 5 11 17]
 [11 25 39]
 [17 39 61]]
C
[[ 1 2 3]
 [3 4 5]
 [5 6 7]]
D
[[ 5 11 17]
 [11 25 41]
 [17 39 61]]
Attempts:
2 left
💡 Hint
Multiplying a matrix by its transpose results in a symmetric matrix with dot products of rows.
🧠 Conceptual
expert
1:30remaining
Which statement about the @ operator in numpy is TRUE?
Select the correct statement about the @ operator for numpy arrays.
AThe @ operator performs matrix multiplication and requires the inner dimensions to match.
BThe @ operator performs element-wise multiplication of two numpy arrays.
CThe @ operator can multiply any two numpy arrays regardless of their shapes.
DThe @ operator is only used for multiplying numpy arrays with scalars.
Attempts:
2 left
💡 Hint
Think about how matrix multiplication works and what the @ operator does.

Practice

(1/5)
1. What does the @ operator do in numpy when applied between two arrays?
easy
A. Performs matrix multiplication if shapes are compatible
B. Adds the two arrays element-wise
C. Calculates the element-wise product
D. Computes the transpose of the first array

Solution

  1. Step 1: Understand the @ operator purpose

    The @ operator in numpy is designed for matrix multiplication, which requires the inner dimensions of the two arrays to match.
  2. Step 2: Differentiate from other operations

    Element-wise addition or multiplication use + or * respectively, not @. Transpose uses .T.
  3. Final Answer:

    Performs matrix multiplication if shapes are compatible -> Option A
  4. Quick Check:

    @ means matrix multiply [OK]
Hint: Remember: @ means matrix multiply, not element-wise [OK]
Common Mistakes:
  • Confusing @ with element-wise multiplication
  • Thinking @ adds arrays
  • Assuming @ transposes arrays
2. Which of the following is the correct syntax to multiply two numpy arrays A and B using the @ operator?
easy
A. C = A * B
B. C = A + B
C. C = A.dot(B)
D. C = A @ B

Solution

  1. Step 1: Identify the @ operator usage

    The @ operator is used as C = A @ B to perform matrix multiplication in numpy.
  2. Step 2: Differentiate from other operations

    A * B is element-wise multiplication, A.dot(B) is a method but not using @, and A + B is addition.
  3. Final Answer:

    C = A @ B -> Option D
  4. Quick Check:

    Use @ between arrays for matrix multiply [OK]
Hint: Use @ directly between arrays for matrix multiply [OK]
Common Mistakes:
  • Using * instead of @ for matrix multiply
  • Confusing method dot() with operator @
  • Using addition operator + mistakenly
3. What is the output of the following code?
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B
print(C)
medium
A. [[ 5 12] [21 32]]
B. [[ 6 8] [10 12]]
C. [[19 22] [43 50]]
D. [[ 5 6] [ 7 8]]

Solution

  1. Step 1: Calculate matrix multiplication manually

    Multiply rows of A by columns of B:
    First row: (1*5 + 2*7) = 19, (1*6 + 2*8) = 22
    Second row: (3*5 + 4*7) = 43, (3*6 + 4*8) = 50
  2. Step 2: Confirm output matches calculation

    The resulting matrix is [[19, 22], [43, 50]], which matches [[19 22] [43 50]].
  3. Final Answer:

    [[19 22] [43 50]] -> Option C
  4. Quick Check:

    Matrix multiply result = [[19 22] [43 50]] [OK]
Hint: Multiply rows by columns and sum for each element [OK]
Common Mistakes:
  • Adding elements instead of multiplying and summing
  • Mixing element-wise multiplication with matrix multiplication
  • Confusing row and column order
4. What error will occur when running this code?
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8], [9, 10]])
C = A @ B
medium
A. ValueError: shapes (2,3) and (2,2) not aligned for matrix multiplication
B. TypeError: unsupported operand type(s) for @
C. No error, output is a (2,2) matrix
D. IndexError: index out of bounds

Solution

  1. Step 1: Check shapes of arrays

    Array A shape is (2,3), array B shape is (2,2). For matrix multiplication, A's columns (3) must equal B's rows (2).
  2. Step 2: Identify mismatch and error

    Since 3 != 2, numpy raises a ValueError about shape misalignment.
  3. Final Answer:

    ValueError: shapes (2,3) and (2,2) not aligned for matrix multiplication -> Option A
  4. Quick Check:

    Matrix multiply needs matching inner dimensions [OK]
Hint: Check inner dimensions match before using @ [OK]
Common Mistakes:
  • Ignoring shape mismatch and expecting output
  • Confusing element-wise multiplication with matrix multiplication
  • Assuming @ works like addition
5. Given two numpy arrays:
A = np.array([[1, 0], [0, 1]])
B = np.array([[2, 3], [4, 5]])

What is the result of C = A @ B @ A?
hard
A. [[5 8] [9 14]]
B. [[2 3] [4 5]]
C. [[1 0] [0 1]]
D. [[2 4] [3 5]]

Solution

  1. Step 1: Multiply A and B

    Matrix A is the identity matrix. Multiplying identity with B returns B:
    A @ B = B = [[2, 3], [4, 5]]
  2. Step 2: Multiply result by A again

    Multiplying B by identity matrix A again returns B:
    B @ A = B = [[2, 3], [4, 5]]
  3. Final Answer:

    [[2 3] [4 5]] -> Option B
  4. Quick Check:

    Identity matrix leaves other matrix unchanged [OK]
Hint: Identity matrix A leaves matrix unchanged when multiplied [OK]
Common Mistakes:
  • Multiplying incorrectly and swapping rows/columns
  • Assuming multiplication changes matrix when identity is involved
  • Confusing element-wise and matrix multiplication