Bird
Raised Fist0
SciPydata~20 mins

Singular Value Decomposition (svd) in SciPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
SVD Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of SVD on a simple matrix
What is the shape of the matrices U, S, and VT after applying SVD to a 3x2 matrix using scipy.linalg.svd with full_matrices=False?
SciPy
import numpy as np
from scipy.linalg import svd

A = np.array([[1, 2], [3, 4], [5, 6]])
U, S, VT = svd(A, full_matrices=False)
print(U.shape, S.shape, VT.shape)
A(3, 2) (2,) (2, 2)
B(3, 3) (3,) (3, 2)
C(3, 2) (3,) (2, 2)
D(3, 3) (2,) (2, 2)
Attempts:
2 left
💡 Hint
Remember that full_matrices=False returns reduced shapes for U and VT.
❓ data_output
intermediate
2:00remaining
Reconstruct matrix from SVD components
Given U, S, and VT from SVD of matrix A, which option correctly reconstructs A?
SciPy
import numpy as np
from scipy.linalg import svd

A = np.array([[7, 8], [9, 10], [11, 12]])
U, S, VT = svd(A, full_matrices=False)

# Which code reconstructs A correctly?
Anp.dot(U, S) @ VT
BU * S * VT
CU @ np.diag(S) @ VT
Dnp.diag(U) @ S @ VT
Attempts:
2 left
💡 Hint
Recall that S is a 1D array of singular values, so you need to convert it to a diagonal matrix.
❓ visualization
advanced
2:00remaining
Visualizing singular values
Which code snippet correctly plots the singular values of matrix A using matplotlib?
SciPy
import numpy as np
from scipy.linalg import svd
import matplotlib.pyplot as plt

A = np.array([[3, 1, 1], [-1, 3, 1]])
U, S, VT = svd(A)

# Which code plots singular values S as a bar chart?
Aplt.bar(range(len(S)), S); plt.show()
Bplt.plot(S); plt.show()
Cplt.scatter(range(len(S)), S); plt.show()
Dplt.hist(S); plt.show()
Attempts:
2 left
💡 Hint
Bar charts are good for showing discrete values like singular values.
🧠 Conceptual
advanced
2:00remaining
Effect of zero singular values
If a matrix has singular values [5, 3, 0, 0], what does the presence of zero singular values indicate about the matrix?
AThe matrix is invertible
BThe matrix is full rank with rank 4
CThe matrix is symmetric
DThe matrix is rank deficient and has rank 2
Attempts:
2 left
💡 Hint
Zero singular values mean some dimensions collapse to zero.
🔧 Debug
expert
2:00remaining
Identify error in SVD reconstruction code
What error will this code produce when trying to reconstruct matrix A from its SVD components?
SciPy
import numpy as np
from scipy.linalg import svd

A = np.array([[1, 0], [0, 1]])
U, S, VT = svd(A)
A_reconstructed = U @ S @ VT
print(A_reconstructed)
ATypeError: unsupported operand type(s) for @: 'numpy.ndarray' and 'numpy.ndarray'
BValueError: shapes (2,2) and (2,) not aligned for matrix multiplication
CNo error, prints the original matrix
DNameError: name 'S' is not defined
Attempts:
2 left
💡 Hint
Check the shape and type of S before matrix multiplication.

Practice

(1/5)
1.

What does the svd function in scipy.linalg return when applied to a matrix?

easy
A. The determinant of the matrix
B. Only the singular values as a matrix
C. The inverse of the matrix
D. Three matrices: U, singular values as a vector, and VT

Solution

  1. Step 1: Understand the output of SVD

    The Singular Value Decomposition splits a matrix into three parts: U, singular values, and VT.
  2. Step 2: Recall scipy.linalg.svd output

    Scipy's svd returns U (left singular vectors), a vector of singular values, and VT (right singular vectors transposed).
  3. Final Answer:

    Three matrices: U, singular values as a vector, and VT -> Option D
  4. Quick Check:

    SVD output = U, s, VT [OK]
Hint: Remember SVD splits matrix into U, s, VT [OK]
Common Mistakes:
  • Thinking svd returns only singular values
  • Confusing VT with V
  • Expecting a single matrix output
2.

Which of the following is the correct way to import and use svd from scipy.linalg?

???
easy
A. import svd from scipy.linalg U, s, VT = svd(matrix)
B. import scipy.linalg.svd U, s, VT = scipy.linalg.svd(matrix)
C. from scipy.linalg import svd U, s, VT = svd(matrix)
D. from scipy import svd U, s, VT = svd(matrix)

Solution

  1. Step 1: Check correct import syntax

    Correct import for svd is from scipy.linalg import svd.
  2. Step 2: Confirm usage

    Then call svd(matrix) to get U, s, VT.
  3. Final Answer:

    from scipy.linalg import svd\nU, s, VT = svd(matrix) -> Option C
  4. Quick Check:

    Correct import and call = from scipy.linalg import svd U, s, VT = svd(matrix) [OK]
Hint: Use 'from scipy.linalg import svd' to import [OK]
Common Mistakes:
  • Using incorrect import syntax
  • Trying to import svd directly from scipy
  • Using 'import svd from' which is invalid
3.

Given the code below, what is the shape of U, s, and VT?

import numpy as np
from scipy.linalg import svd

matrix = np.array([[1, 2], [3, 4], [5, 6]])
U, s, VT = svd(matrix)
medium
A. U: (3, 3), s: (2,), VT: (2, 2)
B. U: (3, 2), s: (2,), VT: (2, 2)
C. U: (2, 2), s: (2,), VT: (3, 3)
D. U: (3, 3), s: (3,), VT: (2, 2)

Solution

  1. Step 1: Identify matrix shape

    The matrix is 3 rows by 2 columns (3x2).
  2. Step 2: Recall full SVD shapes

    Full SVD returns U as (m, m), s as (min(m,n),), VT as (n, n). Here m=3, n=2, so U=(3,3), s=(2,), VT=(2,2).
  3. Final Answer:

    U: (3, 3), s: (2,), VT: (2, 2) -> Option A
  4. Quick Check:

    Full SVD shapes = U(m,m), s(min(m,n)), VT(n,n) [OK]
Hint: Full SVD U shape = (m,m), VT = (n,n), s length = min(m,n) [OK]
Common Mistakes:
  • Assuming U shape is (m,n) instead of (m,m)
  • Confusing s shape with VT shape
  • Mixing up rows and columns in shapes
4.

What is wrong with the following code snippet that tries to compute the SVD of a matrix?

from scipy.linalg import svd

matrix = [[1, 0], [0, 1]]
U, s, VT = svd(matrix)
print(U, s, VT)
medium
A. svd function does not return three values
B. The matrix should be a NumPy array, not a list of lists
C. The import statement is incorrect
D. The print statement syntax is wrong

Solution

  1. Step 1: Check input type for svd

    svd expects a NumPy array or similar numeric array, not a plain Python list.
  2. Step 2: Identify error cause

    Passing a list of lists can cause unexpected behavior or errors; converting to np.array fixes this.
  3. Final Answer:

    The matrix should be a NumPy array, not a list of lists -> Option B
  4. Quick Check:

    Input must be np.array for svd [OK]
Hint: Always convert input to np.array before svd [OK]
Common Mistakes:
  • Passing Python lists directly to svd
  • Assuming svd returns a single matrix
  • Incorrect import or print syntax
5.

You have a large dataset matrix X of shape (1000, 50). You want to reduce its dimensionality to 10 while keeping most information. Which step using scipy.linalg.svd helps achieve this?

hard
A. Compute full SVD, then keep only the first 10 singular values and corresponding vectors
B. Compute SVD and discard the singular values
C. Use svd to get U and VT, then multiply all components without truncation
D. Apply svd only on a 10x10 submatrix of X

Solution

  1. Step 1: Understand dimensionality reduction with SVD

    Reducing dimensions means keeping top singular values and vectors that capture most variance.
  2. Step 2: Apply truncation after full SVD

    Compute full SVD, then keep first 10 singular values and corresponding columns of U and rows of VT to reduce size.
  3. Final Answer:

    Compute full SVD, then keep only the first 10 singular values and corresponding vectors -> Option A
  4. Quick Check:

    Truncate SVD components to reduce dimensions [OK]
Hint: Keep top singular values and vectors for reduction [OK]
Common Mistakes:
  • Discarding singular values loses information
  • Using only a submatrix loses global structure
  • Not truncating leads to no reduction
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