Bird
Raised Fist0
NumPydata~10 mins

np.ix_() for open mesh indexing in NumPy - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create open mesh indices using np.ix_.

NumPy
import numpy as np
rows = np.array([0, 2, 4])
cols = np.array([1, 3])
mesh = np.[1](rows, cols)
print(mesh)
Drag options to blanks, or click blank then click option'
Aix_
Bmeshgrid
Copen_mesh
Dindices
Attempts:
3 left
💡 Hint
Common Mistakes
Using np.meshgrid instead of np.ix_
Trying to use np.indices which creates grid indices for shape, not from arrays
2fill in blank
medium

Complete the code to select elements from a 2D array using np.ix_.

NumPy
import numpy as np
arr = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
rows = [0, 2]
cols = [1, 2]
selected = arr[[1](rows, cols)]
print(selected)
Drag options to blanks, or click blank then click option'
Ameshgrid
Bopen_mesh
Cindices
Dix_
Attempts:
3 left
💡 Hint
Common Mistakes
Using np.meshgrid which returns coordinate matrices, not suitable for fancy indexing here
Trying to index directly with lists without np.ix_
3fill in blank
hard

Fix the error in the code to correctly use np.ix_ for indexing.

NumPy
import numpy as np
arr = np.arange(16).reshape(4,4)
rows = [1, 3]
cols = [0, 2]
subset = arr[[1](rows, cols)]
print(subset)
Drag options to blanks, or click blank then click option'
Ameshgrid
Bix_
Cindices
Dopen_mesh
Attempts:
3 left
💡 Hint
Common Mistakes
Using np.meshgrid which returns coordinate matrices, not suitable for fancy indexing
Using np.indices which expects shape, not arrays
4fill in blank
hard

Fill both blanks to create a dictionary of squares for numbers greater than 3 using dictionary comprehension.

NumPy
numbers = [1, 2, 3, 4, 5]
squares = [1]: [2] for n in numbers if n > 3
Drag options to blanks, or click blank then click option'
An
Bn**2
Dn*2
Attempts:
3 left
💡 Hint
Common Mistakes
Using n*2 instead of n**2 for squares
Swapping key and value positions
5fill in blank
hard

Fill all three blanks to create a dictionary of uppercase keys and values greater than 10.

NumPy
data = {'a': 5, 'b': 15, 'c': 20}
result = [1]: [2] for k, v in data.items() if v [3] 10}}
Drag options to blanks, or click blank then click option'
Ak.upper()
Bv
C>
Dk
Attempts:
3 left
💡 Hint
Common Mistakes
Using k instead of k.upper() for keys
Using < instead of > in the condition

Practice

(1/5)
1. What does np.ix_() do in NumPy?
easy
A. Generates random numbers in a given range
B. Creates open mesh index arrays from 1D index lists to select multi-dimensional slices
C. Sorts arrays in ascending order
D. Flattens multi-dimensional arrays into 1D arrays

Solution

  1. Step 1: Understand the purpose of np.ix_()

    It takes multiple 1D index arrays and returns open mesh grids for indexing.
  2. Step 2: Recognize its use in multi-dimensional selection

    This allows selecting rows and columns without loops by creating broadcastable index arrays.
  3. Final Answer:

    Creates open mesh index arrays from 1D index lists to select multi-dimensional slices -> Option B
  4. Quick Check:

    np.ix_() = open mesh indexing [OK]
Hint: np.ix_() makes multi-dim indexing easy without loops [OK]
Common Mistakes:
  • Confusing np.ix_() with random number generation
  • Thinking it sorts arrays
  • Assuming it flattens arrays
2. Which of the following is the correct syntax to use np.ix_() for selecting rows 0 and 2 and columns 1 and 3 from a 2D array arr?
easy
A. arr[np.ix_([0, 1], [2, 3])]
B. arr[np.ix_([1, 3], [0, 2])]
C. arr[np.ix_([0, 2], [1, 3])]
D. arr[np.ix_([2, 0], [3, 1])]

Solution

  1. Step 1: Identify the correct row and column indices

    Rows needed are 0 and 2; columns needed are 1 and 3.
  2. Step 2: Use np.ix_() with rows first, then columns

    Correct syntax is arr[np.ix_([0, 2], [1, 3])] to select those rows and columns.
  3. Final Answer:

    arr[np.ix_([0, 2], [1, 3])] -> Option C
  4. Quick Check:

    Rows then columns in np.ix_() [OK]
Hint: np.ix_() takes row indices first, then column indices [OK]
Common Mistakes:
  • Swapping row and column indices order
  • Using wrong index values
  • Confusing np.ix_() with slicing syntax
3. Given the code:
import numpy as np
arr = np.array([[10, 20, 30, 40],
                [50, 60, 70, 80],
                [90, 100, 110, 120]])
rows = [0, 2]
cols = [1, 3]
result = arr[np.ix_(rows, cols)]
print(result)

What is the output?
medium
A. [[ 20 40] [100 120]]
B. [[ 10 30] [ 90 110]]
C. [[ 50 80] [ 90 120]]
D. [[ 20 40 60] [100 120 140]]

Solution

  1. Step 1: Identify rows and columns selected

    Rows 0 and 2 correspond to first and last rows; columns 1 and 3 correspond to second and fourth columns.
  2. Step 2: Extract values from arr at these indices

    Row 0: values at cols 1 and 3 are 20 and 40; Row 2: values at cols 1 and 3 are 100 and 120.
  3. Final Answer:

    [[ 20 40] [100 120]] -> Option A
  4. Quick Check:

    Selected rows and columns match output [OK]
Hint: Match row and column indices to array positions carefully [OK]
Common Mistakes:
  • Mixing up row and column indices
  • Printing wrong slices
  • Confusing np.ix_() output shape
4. What is wrong with this code snippet?
import numpy as np
arr = np.arange(16).reshape(4,4)
rows = [1, 3]
cols = [0, 2]
result = arr[np.ix_(cols, rows)]
print(result)
medium
A. np.ix_() cannot be used with lists
B. The reshape size is incorrect for np.arange(16)
C. The lists rows and cols contain invalid indices
D. The order of indices in np.ix_() is swapped; rows should come first

Solution

  1. Step 1: Check the order of indices in np.ix_()

    np.ix_() expects row indices first, then column indices.
  2. Step 2: Identify the mistake in the code

    Here, cols are passed first and rows second, which swaps the intended selection.
  3. Final Answer:

    The order of indices in np.ix_() is swapped; rows should come first -> Option D
  4. Quick Check:

    Rows first, columns second in np.ix_() [OK]
Hint: Always pass rows first, then columns to np.ix_() [OK]
Common Mistakes:
  • Passing columns before rows
  • Misunderstanding reshape dimensions
  • Thinking np.ix_() only accepts arrays, not lists
5. You have a 3D NumPy array data with shape (4, 5, 6). You want to select slices at indices [1, 3] for the first dimension, [0, 2, 4] for the second, and [2, 5] for the third dimension. Which code correctly uses np.ix_() to get this selection?
hard
A. data[np.ix_([1, 3], [0, 2, 4], [2, 5])]
B. data[np.ix_([0, 2, 4], [1, 3], [2, 5])]
C. data[np.ix_([1, 3], [2, 5], [0, 2, 4])]
D. data[np.ix_([2, 5], [1, 3], [0, 2, 4])]

Solution

  1. Step 1: Identify the dimension order and indices

    First dimension indices: [1, 3]; second dimension: [0, 2, 4]; third dimension: [2, 5].
  2. Step 2: Use np.ix_() with indices in correct dimension order

    np.ix_() takes indices in order of dimensions: first, second, then third.
  3. Step 3: Confirm the correct option

    data[np.ix_([1, 3], [0, 2, 4], [2, 5])] matches the correct order and indices.
  4. Final Answer:

    data[np.ix_([1, 3], [0, 2, 4], [2, 5])] -> Option A
  5. Quick Check:

    Dimension order matches np.ix_() arguments [OK]
Hint: Pass indices in dimension order to np.ix_() for multi-dim arrays [OK]
Common Mistakes:
  • Mixing up dimension order in np.ix_()
  • Using wrong index lists
  • Assuming np.ix_() works differently for 3D arrays
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