Bird
Raised Fist0
NumPydata~5 mins

np.einsum() for efficient computation in NumPy - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does np.einsum() do in numpy?

np.einsum() lets you write simple formulas to do many math operations on arrays efficiently, like sums, products, and transposes, all in one step.

Click to reveal answer
intermediate
How does np.einsum() improve performance compared to regular numpy operations?

It reduces extra steps and temporary arrays by combining operations, so calculations use less memory and run faster.

Click to reveal answer
beginner
Explain the meaning of the subscripts in np.einsum('ij,jk->ik', A, B).

'ij' means matrix A with rows i and columns j.
'jk' means matrix B with rows j and columns k.
'ik' means the output matrix with rows i and columns k.
This does matrix multiplication.

Click to reveal answer
intermediate
Can np.einsum() be used for operations like dot product, outer product, and trace? Give a simple example.

Yes! For example:
Dot product: np.einsum('i,i->', a, b)
Outer product: np.einsum('i,j->ij', a, b)
Trace: np.einsum('ii', A)

Click to reveal answer
beginner
Why might beginners find np.einsum() tricky at first?

Because it uses a special string notation to describe operations, which can look confusing until you practice reading and writing these formulas.

Click to reveal answer
What does np.einsum('ij,jk->ik', A, B) compute?
ASum of all elements in A and B
BMatrix multiplication of A and B
CElement-wise multiplication of A and B
DTranspose of matrix A
Which of these is a benefit of using np.einsum()?
AIt can combine multiple operations efficiently
BIt replaces Python loops with slower code
CIt only works on 1D arrays
DIt always uses more memory
What does the subscript 'ii' mean in np.einsum('ii', A)?
AOuter product of A with itself
BSum of all elements in A
CTranspose of A
DSum of diagonal elements (trace) of A
How would you use np.einsum() to compute the dot product of two vectors a and b?
A<code>np.einsum('i,i->', a, b)</code>
B<code>np.einsum('i,j->ij', a, b)</code>
C<code>np.einsum('ij,jk->ik', a, b)</code>
D<code>np.einsum('ii', a)</code>
Which is NOT true about np.einsum()?
AIt can perform tensor contractions
BIt requires understanding subscript notation
CIt only works with 2D arrays
DIt can reduce temporary arrays for speed
Describe how np.einsum() can be used to perform matrix multiplication. Include an example with explanation.
Think about how rows and columns match in matrix multiplication.
You got /4 concepts.
    Explain why np.einsum() can be more efficient than chaining multiple numpy operations.
    Consider what happens when you do many steps separately versus all at once.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of np.einsum() in numpy?
      easy
      A. To perform efficient and readable array operations using Einstein summation notation
      B. To create random arrays with specific distributions
      C. To sort arrays in ascending order
      D. To reshape arrays into different dimensions

      Solution

      1. Step 1: Understand the function's goal

        np.einsum() uses Einstein summation notation to express complex array operations clearly and efficiently.
      2. Step 2: Compare with other options

        Options B, C, and D describe unrelated numpy functions like random generation, sorting, and reshaping.
      3. Final Answer:

        To perform efficient and readable array operations using Einstein summation notation -> Option A
      4. Quick Check:

        Purpose of np.einsum() = To perform efficient and readable array operations using Einstein summation notation [OK]
      Hint: Remember: einsum is for smart, fast array math [OK]
      Common Mistakes:
      • Confusing einsum with random array creation
      • Thinking einsum sorts or reshapes arrays
      • Assuming einsum is only for dot products
      2. Which of the following is the correct syntax to compute the matrix product of two 2D arrays A and B using np.einsum()?
      easy
      A. np.einsum('ij,jk->ik', A, B)
      B. np.einsum('ik,jk->ij', A, B)
      C. np.einsum('ij,ik->jk', A, B)
      D. np.einsum('ji,kj->ik', A, B)

      Solution

      1. Step 1: Recall matrix multiplication indices

        Matrix multiplication of A (shape ixj) and B (shape jxk) results in shape ixk, summing over j.
      2. Step 2: Match einsum subscripts

        np.einsum('ij,jk->ik', A, B) uses 'ij,jk->ik', which correctly sums over j and produces ixk output.
      3. Final Answer:

        np.einsum('ij,jk->ik', A, B) -> Option A
      4. Quick Check:

        Matrix product einsum = np.einsum('ij,jk->ik', A, B) [OK]
      Hint: Use 'ij,jk->ik' for matrix multiplication [OK]
      Common Mistakes:
      • Mixing up indices order in the subscript string
      • Using wrong output indices after ->
      • Confusing which axis to sum over
      3. Given the code:
      import numpy as np
      A = np.array([[1, 2], [3, 4]])
      B = np.array([[5, 6], [7, 8]])
      result = np.einsum('ij,ij->i', A, B)
      print(result)

      What is the output?
      medium
      A. [19 43]
      B. [17 43]
      C. [23 53]
      D. [17 53]

      Solution

      1. Step 1: Understand the einsum subscripts 'ij,ij->i'

        This sums element-wise multiplication over the second index j, keeping the first index i.
      2. Step 2: Calculate for each i

        For i=0: (1*5)+(2*6)=5+12=17; For i=1: (3*7)+(4*8)=21+32=53.
      3. Final Answer:

        [17 53] -> Option D
      4. Quick Check:

        Element-wise sum over j = [17 53] [OK]
      Hint: Sum over repeated indices, keep others [OK]
      Common Mistakes:
      • Summing over wrong axis
      • Confusing output indices in einsum
      • Calculating element-wise product incorrectly
      4. Identify the error in this code snippet:
      import numpy as np
      A = np.array([[1, 2], [3, 4]])
      B = np.array([[5, 6], [7, 8]])
      result = np.einsum('ij,jk->ik', A, B)
      print(result)

      and choose the correct fix.
      medium
      A. Ensure B has shape (2, 2) and use 'ij,jk->ik' as is
      B. No error; code runs correctly
      C. Swap arrays to np.einsum('jk,ij->ik', B, A)
      D. Change subscript to 'ij,ik->jk' to match shapes

      Solution

      1. Step 1: Check array shapes and einsum subscripts

        A and B both have shape (2,2). The subscript 'ij,jk->ik' expects B's first dimension (j) to match A's second dimension (j), which it does.
      2. Step 2: Verify if code runs

        Shapes match perfectly for matrix multiplication. No error; the code runs correctly.
      3. Final Answer:

        No error; code runs correctly -> Option B
      4. Quick Check:

        No error; code runs correctly [OK]
      Hint: Check array shapes match einsum indices [OK]
      Common Mistakes:
      • Assuming code errors without checking shapes
      • Changing subscripts incorrectly
      • Swapping arrays unnecessarily
      5. You have a 3D array data with shape (10, 5, 4) representing 10 samples, 5 features, and 4 time points. Using np.einsum(), how do you compute the sum of products of features and time points for each sample, resulting in a 1D array of length 10?
      hard
      A. np.einsum('ijk,ijk->k', data, data)
      B. np.einsum('ijk,ijk->j', data, data)
      C. np.einsum('ijk,ijk->i', data, data)
      D. np.einsum('ijk,ijk->ij', data, data)

      Solution

      1. Step 1: Understand the dimensions and desired output

        Data shape is (samples=10, features=5, time=4). We want to sum over features and time, keeping samples dimension.
      2. Step 2: Use einsum to sum over j and k, keep i

        Subscript 'ijk,ijk->i' multiplies element-wise and sums over j and k, resulting in length 10 array.
      3. Final Answer:

        np.einsum('ijk,ijk->i', data, data) -> Option C
      4. Quick Check:

        Sum over features and time = np.einsum('ijk,ijk->i', data, data) [OK]
      Hint: Sum over repeated indices, keep sample index [OK]
      Common Mistakes:
      • Summing over wrong axes
      • Confusing output indices in einsum
      • Expecting 2D output instead of 1D
      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