Bird
Raised Fist0
SciPydata~20 mins

COO format (Coordinate) in SciPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
COO Format Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of COO matrix data arrays
Given the following code creating a COO sparse matrix, what will be the output of the data, row, and col arrays?
SciPy
from scipy.sparse import coo_matrix
import numpy as np
row = np.array([0, 3, 1, 0])
col = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
coo = coo_matrix((data, (row, col)), shape=(4, 4))
print(coo.data)
print(coo.row)
print(coo.col)
A
[4 9 7 5]
[0 0 1 3]
[0 2 1 3]
B
[9 7 5 4]
[0 1 3 0]
[2 1 3 0]
C
[4 5 7 9]
[0 3 1 0]
[0 3 1 2]
D
[4 7 5 9]
[0 1 3 0]
[0 1 3 2]
Attempts:
2 left
💡 Hint
The COO format stores data in the order you provide the row and column indices.
❓ data_output
intermediate
1:30remaining
Number of non-zero elements in COO matrix
How many non-zero elements does the following COO matrix have?
SciPy
from scipy.sparse import coo_matrix
row = [0, 1, 1, 2, 3]
col = [0, 0, 2, 3, 3]
data = [1, 2, 3, 4, 5]
coo = coo_matrix((data, (row, col)), shape=(4, 4))
print(coo.nnz)
A6
B5
C3
D4
Attempts:
2 left
💡 Hint
nnz means number of stored non-zero elements.
🔧 Debug
advanced
2:00remaining
Identify the error in COO matrix creation
What error will this code raise when creating a COO matrix?
SciPy
from scipy.sparse import coo_matrix
row = [0, 1, 2]
col = [0, 1]
data = [1, 2, 3]
coo = coo_matrix((data, (row, col)), shape=(3, 3))
AIndexError: index out of bounds
BTypeError: data must be a 1-dimensional array
CNo error, matrix created successfully
DValueError: shape mismatch: objects cannot be broadcast to a single shape
Attempts:
2 left
💡 Hint
Check if the lengths of row, col, and data arrays match.
🚀 Application
advanced
1:30remaining
Convert COO matrix to dense and find sum
What is the sum of all elements in the dense matrix converted from this COO matrix?
SciPy
from scipy.sparse import coo_matrix
row = [0, 1, 2, 2]
col = [0, 1, 1, 2]
data = [10, 20, 30, 40]
coo = coo_matrix((data, (row, col)), shape=(3, 3))
dense = coo.toarray()
print(dense.sum())
A100
B90
C80
D120
Attempts:
2 left
💡 Hint
Sum all the data values since zeros do not add.
🧠 Conceptual
expert
2:30remaining
Effect of duplicate entries in COO matrix
If a COO matrix has duplicate entries at the same row and column indices, what happens when converting it to CSR format?
AThe duplicate entries are summed together in the CSR matrix.
BThe duplicate entries cause an error during conversion.
COnly the first duplicate entry is kept; others are discarded.
DThe duplicates remain separate and increase the nnz count.
Attempts:
2 left
💡 Hint
Think about how sparse formats handle duplicates when compressed.

Practice

(1/5)
1. What does the COO format in scipy primarily store?
coo_matrix is used to represent sparse matrices by storing which of the following?
easy
A. Only non-zero values and their row and column indices
B. All values including zeros in a dense matrix
C. Only the diagonal elements of a matrix
D. The matrix in a compressed row format

Solution

  1. Step 1: Understand COO format basics and compare options

    COO format stores sparse matrices by keeping track of non-zero values and their positions. Only non-zero values and their row and column indices correctly describes storing non-zero values with their row and column indices.
  2. Final Answer:

    Only non-zero values and their row and column indices -> Option A
  3. Quick Check:

    COO = non-zero values + coordinates [OK]
Hint: COO stores non-zero values with positions only [OK]
Common Mistakes:
  • Thinking COO stores all matrix values
  • Confusing COO with compressed formats
  • Assuming COO stores only diagonal elements
2. Which of the following is the correct way to create a COO sparse matrix from data arrays data, row, and col using scipy?
easy
A. coo_matrix((data, (row, col)))
B. coo_matrix(data, row, col)
C. coo_matrix(data, (row, col))
D. coo_matrix((row, col), data)

Solution

  1. Step 1: Recall scipy coo_matrix syntax and check each option

    The correct syntax is coo_matrix((data, (row, col))) where data is values and (row, col) are coordinates. Only coo_matrix((data, (row, col))) matches the correct tuple structure required by coo_matrix.
  2. Final Answer:

    coo_matrix((data, (row, col))) -> Option A
  3. Quick Check:

    Tuple of (data, (row, col)) is correct [OK]
Hint: Use tuple: (data, (row, col)) for coo_matrix [OK]
Common Mistakes:
  • Passing data, row, col as separate arguments
  • Swapping order of data and coordinates
  • Not using nested tuple for coordinates
3. What is the output of the following code?
from scipy.sparse import coo_matrix
row = [0, 1, 2]
col = [1, 2, 0]
data = [4, 5, 6]
coo = coo_matrix((data, (row, col)), shape=(3, 3))
print(coo.toarray())
medium
A. [[0 6 0] [5 0 0] [0 0 4]]
B. [[4 0 0] [0 5 0] [0 0 6]]
C. [[0 0 6] [4 0 0] [0 5 0]]
D. [[0 4 0] [0 0 5] [6 0 0]]

Solution

  1. Step 1: Map data to matrix positions and construct full matrix

    Data 4 at (0,1), 5 at (1,2), 6 at (2,0) means matrix has these values at those coordinates. Positions without data are zero, so the matrix is [[0 4 0], [0 0 5], [6 0 0]].
  2. Final Answer:

    [[0 4 0] [0 0 5] [6 0 0]] -> Option D
  3. Quick Check:

    Data placed at (row, col) = matrix [OK]
Hint: Match data with (row, col) indices to build matrix [OK]
Common Mistakes:
  • Mixing row and column indices
  • Assuming data fills diagonal
  • Confusing toarray() output formatting
4. Identify the error in this code snippet that tries to create a COO matrix:
from scipy.sparse import coo_matrix
row = [0, 1]
col = [1, 2]
data = [3]
coo = coo_matrix((data, (row, col)), shape=(3, 3))
medium
A. Shape parameter is missing
B. Length of data does not match length of row and col arrays
C. coo_matrix requires dense matrix input
D. row and col must be numpy arrays, not lists

Solution

  1. Step 1: Check lengths of data, row, and col and understand coo_matrix requirements

    Data has length 1, but row and col have length 2, which is inconsistent. Data, row, and col must have the same length to map values correctly.
  2. Final Answer:

    Length of data does not match length of row and col arrays -> Option B
  3. Quick Check:

    Data, row, col lengths must match [OK]
Hint: Data, row, col arrays must be same length [OK]
Common Mistakes:
  • Ignoring length mismatch errors
  • Assuming lists are invalid input
  • Missing shape parameter causes error
5. You have coordinate data for a large sparse matrix with many zero values. Which of the following is the best approach to efficiently create and store this matrix using scipy?
hard
A. Create a dense numpy array and convert it to coo_matrix
B. Store the matrix as a list of lists with zeros included
C. Use coo_matrix with data, row, and col arrays and convert to CSR format for fast arithmetic
D. Use a dictionary to store all matrix values including zeros

Solution

  1. Step 1: Understand sparse matrix creation, optimize for operations, and evaluate options

    COO format efficiently stores non-zero values with coordinates, ideal for sparse data. Converting COO to CSR format improves arithmetic and slicing performance. Dense arrays waste memory; lists or dicts storing zeros are inefficient.
  2. Final Answer:

    Use coo_matrix with data, row, and col arrays and convert to CSR format for fast arithmetic -> Option C
  3. Quick Check:

    COO + CSR = efficient sparse matrix handling [OK]
Hint: Create COO then convert to CSR for speed [OK]
Common Mistakes:
  • Using dense arrays wastes memory
  • Storing zeros wastes space
  • Ignoring format conversion for speed
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