Bird
Raised Fist0
NumPydata~10 mins

outer() for outer operations in NumPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - outer() for outer operations
Input: Vector A
↓
Input: Vector B
↓
Compute outer product
↓
Output: Matrix with shape (len(A), len(B))
The outer() function takes two vectors and computes all pairwise products, producing a matrix.
Execution Sample
NumPy
import numpy as np
A = np.array([1, 2])
B = np.array([3, 4])
result = np.outer(A, B)
print(result)
This code computes the outer product of vectors A and B, resulting in a 2x2 matrix.
Execution Table
StepOperationInput AInput BResult Matrix
1Start with vectors[1, 2][3, 4]N/A
2Multiply A[0] * B[0]13result[0,0] = 3
3Multiply A[0] * B[1]14result[0,1] = 4
4Multiply A[1] * B[0]23result[1,0] = 6
5Multiply A[1] * B[1]24result[1,1] = 8
6Final matrixN/AN/A[[3, 4], [6, 8]]
💡 All pairs of elements multiplied, matrix complete with shape (2,2).
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
A[1, 2][1, 2][1, 2][1, 2][1, 2][1, 2]
B[3, 4][3, 4][3, 4][3, 4][3, 4][3, 4]
resultempty[[3, 0], [0, 0]][[3, 4], [0, 0]][[3, 4], [6, 0]][[3, 4], [6, 8]][[3, 4], [6, 8]]
Key Moments - 2 Insights
Why does the output have shape (len(A), len(B)) and not (len(B), len(A))?
The outer() function multiplies each element of A by each element of B, placing results in rows for A and columns for B, as shown in execution_table rows 2-5.
Is the outer product the same as element-wise multiplication?
No, element-wise multiplication requires vectors of the same length and multiplies elements at the same positions. Outer multiplies all pairs, producing a matrix (see execution_table steps 2-5).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, what is the value of result[1,0]?
A6
B4
C8
D3
💡 Hint
Check the multiplication of A[1] and B[0] in execution_table step 4.
At which step does the matrix result get fully completed?
AStep 5
BStep 3
CStep 6
DStep 4
💡 Hint
Look at the final matrix output in execution_table step 6.
If vector B was changed to [5, 6], what would result[0,1] be?
A4
B6
C7
D5
💡 Hint
Multiply A[0] = 1 by new B[1] = 6 to find result[0,1].
Concept Snapshot
numpy.outer(a, b)
- Takes two 1D arrays a and b
- Returns matrix of shape (len(a), len(b))
- Each element is product of a[i] * b[j]
- Useful for pairwise multiplication
- Output is 2D array (outer product matrix)
Full Transcript
The numpy outer() function takes two vectors and multiplies every element of the first vector by every element of the second vector. This creates a matrix where rows correspond to elements of the first vector and columns correspond to elements of the second vector. For example, with vectors A = [1, 2] and B = [3, 4], the outer product matrix is [[3, 4], [6, 8]]. Each step multiplies one pair of elements and fills the matrix. This is different from element-wise multiplication which multiplies elements at the same positions only. The output matrix shape is (length of A, length of B).

Practice

(1/5)
1. What does the numpy.outer() function do with two input arrays?
easy
A. It concatenates the two arrays into one.
B. It adds the two arrays element-wise.
C. It returns the dot product of the two arrays.
D. It computes the outer product, combining every element of the first array with every element of the second array.

Solution

  1. Step 1: Understand the purpose of numpy.outer()

    The function takes two arrays and pairs each element of the first array with each element of the second array.
  2. Step 2: Identify the output type

    The result is a 2D array showing all combinations, which is the outer product.
  3. Final Answer:

    It computes the outer product, combining every element of the first array with every element of the second array. -> Option D
  4. Quick Check:

    Outer product = combine all pairs [OK]
Hint: Outer product pairs all elements from both arrays [OK]
Common Mistakes:
  • Confusing outer product with dot product
  • Thinking it adds arrays element-wise
  • Assuming it concatenates arrays
2. Which of the following is the correct syntax to compute the outer product of arrays a and b using numpy?
easy
A. numpy.outer(a, b)
B. numpy.outerproduct(a, b)
C. numpy.outer(a * b)
D. numpy.outer(a + b)

Solution

  1. Step 1: Recall the function name and parameters

    The correct function is numpy.outer() and it takes two arrays as separate arguments.
  2. Step 2: Check the options for correct syntax

    Only numpy.outer(a, b) matches the correct function call with two arguments.
  3. Final Answer:

    numpy.outer(a, b) -> Option A
  4. Quick Check:

    Correct function call = numpy.outer(a, b) [OK]
Hint: Use numpy.outer(array1, array2) with two arguments [OK]
Common Mistakes:
  • Using wrong function name like outerproduct
  • Passing one combined argument instead of two
  • Using addition or multiplication inside outer()
3. What is the output of the following code?
import numpy as np
x = np.array([1, 2])
y = np.array([3, 4])
result = np.outer(x, y)
print(result)
medium
A. [[3 6] [4 8]]
B. [[3 4] [6 8]]
C. [[4 6] [8 12]]
D. [[1 2] [3 4]]

Solution

  1. Step 1: Calculate outer product manually

    Multiply each element of x by each element of y:
    1*3=3, 1*4=4
    2*3=6, 2*4=8
  2. Step 2: Form the 2D array

    Arrange results as rows for each element of x:
    [[3, 4],
    [6, 8]]
  3. Final Answer:

    [[3 4] [6 8]] -> Option B
  4. Quick Check:

    Outer product matches [[3 4], [6 8]] [OK]
Hint: Multiply each element of first array by all in second [OK]
Common Mistakes:
  • Mixing row and column order
  • Confusing with dot product output
  • Swapping elements of arrays
4. What is the output of the following code?
import numpy as np
x = np.array([1, 2, 3])
y = 5
result = np.outer(x, y)
print(result)
medium
A. [[5] [10] [15]]
B. [[5 10 15]]
C. [[1 2 3] [5]]
D. Throws an error

Solution

  1. Step 1: np.outer() handles scalar second argument

    It treats y=5 as a length-1 array, producing a (3,1) shaped array.
  2. Step 2: Compute the products

    [[1*5], [2*5], [3*5]] = [[5], [10], [15]]
  3. Final Answer:

    [[5] [10] [15]] -> Option A
  4. Quick Check:

    Scalar second arg -> column vector [OK]
Hint: np.outer accepts scalars, treating as 1-element array [OK]
Common Mistakes:
  • Thinking scalars cause errors
  • Expecting row vector instead of column
  • Confusing with concatenation
5. You have two arrays:
a = np.array([1, 0, 2])
b = np.array([3, np.nan])

You want to create a 2D array where each element is the product of elements from a and b, but you want to ignore zeros in a (replace their entire row with zeros). Which code correctly uses numpy.outer() and post-processing to achieve this?
hard
A. result = np.outer(a, b) result[:, b == 0] = 0
B. result = np.outer(a, b) result[a != 0, :] = 0
C. result = np.outer(a, b) result[a == 0, :] = 0
D. result = np.outer(a, b) result[b == 0, :] = 0

Solution

  1. Step 1: Compute outer product

    Using np.outer(a, b) creates a 2D array with all products.
  2. Step 2: Replace rows where a is zero with zeros

    Use boolean indexing result[a == 0, :] = 0 to zero out rows corresponding to zero elements in a.
  3. Final Answer:

    result = np.outer(a, b) result[a == 0, :] = 0 -> Option C
  4. Quick Check:

    Zero rows where a is zero [OK]
Hint: Zero rows where a is zero using boolean indexing [OK]
Common Mistakes:
  • Zeroing columns instead of rows
  • Using wrong condition for zeroing
  • Confusing axis in indexing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard