Bird
Raised Fist0
NumPydata~20 mins

np.in1d() for membership testing in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
np.in1d() Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of np.in1d() with integer arrays
What is the output of the following code?
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([2, 4, 6])
result = np.in1d(arr1, arr2)
print(result)
NumPy
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([2, 4, 6])
result = np.in1d(arr1, arr2)
print(result)
A[ True False True False True]
B[False True False True False]
C[False False False False False]
D[ True True True True True]
Attempts:
2 left
💡 Hint
np.in1d() checks if each element of the first array is in the second array.
❓ data_output
intermediate
2:00remaining
Count of elements in arr1 found in arr2 using np.in1d()
Given the arrays below, how many elements of arr1 are present in arr2?
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50])
arr2 = np.array([15, 20, 35, 40, 55])
mask = np.in1d(arr1, arr2)
count = np.sum(mask)
print(count)
NumPy
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50])
arr2 = np.array([15, 20, 35, 40, 55])
mask = np.in1d(arr1, arr2)
count = np.sum(mask)
print(count)
A1
B3
C2
D0
Attempts:
2 left
💡 Hint
Count how many True values are in the boolean mask from np.in1d().
🔧 Debug
advanced
2:00remaining
Identify the error in np.in1d() usage
What error will this code raise?
import numpy as np
arr1 = [1, 2, 3]
arr2 = 2
result = np.in1d(arr1, arr2)
print(result)
NumPy
import numpy as np
arr1 = [1, 2, 3]
arr2 = 2
result = np.in1d(arr1, arr2)
print(result)
ATypeError: 'int' object is not iterable
BValueError: operands could not be broadcast together
CNo error, outputs [False False True]
DSyntaxError: invalid syntax
Attempts:
2 left
💡 Hint
np.in1d() expects the second argument to be iterable.
🚀 Application
advanced
2:00remaining
Filter DataFrame rows using np.in1d()
You have a DataFrame of students and their grades. You want to select only students whose names are in a given list.
Which code snippet correctly filters the DataFrame?
import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Grade': [85, 92, 78, 90]}
df = pd.DataFrame(data)
selected_names = ['Bob', 'David']

# Which line filters df to only rows with names in selected_names?
NumPy
import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Grade': [85, 92, 78, 90]}
df = pd.DataFrame(data)
selected_names = ['Bob', 'David']
Afiltered_df = df[np.in1d(selected_names, df['Name'])]
Bfiltered_df = df[df['Name'] == selected_names]
Cfiltered_df = df[df['Name'].isin(selected_names)]
Dfiltered_df = df[np.in1d(df['Name'], selected_names)]
Attempts:
2 left
💡 Hint
np.in1d() returns a boolean array matching df['Name'] elements against selected_names.
🧠 Conceptual
expert
3:00remaining
Understanding np.in1d() behavior with repeated elements
Consider the arrays:
import numpy as np
arr1 = np.array([1, 2, 2, 3, 4, 4, 4])
arr2 = np.array([2, 4])
result = np.in1d(arr1, arr2)
print(result)

What is the shape and content of the output array?
NumPy
import numpy as np
arr1 = np.array([1, 2, 2, 3, 4, 4, 4])
arr2 = np.array([2, 4])
result = np.in1d(arr1, arr2)
print(result)
AShape (7,), [False, True, True, False, True, True, True]
BShape (2,), [True, True]
CShape (7,), [True, True, True, True, True, True, True]
DShape (4,), [True, True, True, True]
Attempts:
2 left
💡 Hint
np.in1d() returns a boolean array matching the first array's shape.

Practice

(1/5)
1. What does the np.in1d() function do in NumPy?
easy
A. Finds the unique elements in an array.
B. Sorts the elements of an array in ascending order.
C. Calculates the sum of elements in an array.
D. Checks if elements of one array are present in another array and returns a boolean array.

Solution

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

    The function checks membership of each element in the first array against the second array.
  2. Step 2: Identify the output type

    It returns a boolean array indicating True where elements are found and False otherwise.
  3. Final Answer:

    Checks if elements of one array are present in another array and returns a boolean array. -> Option D
  4. Quick Check:

    Membership test = Checks if elements of one array are present in another array and returns a boolean array. [OK]
Hint: Remember: np.in1d returns booleans for membership [OK]
Common Mistakes:
  • Confusing np.in1d() with sorting or summing functions
  • Expecting np.in1d() to return the matching elements instead of booleans
  • Thinking np.in1d() modifies the original arrays
2. Which of the following is the correct syntax to check if elements of array a are in array b using np.in1d()?
easy
A. np.in1d(b, a)
B. np.in1d(a, b)
C. np.in1d(a == b)
D. np.in1d(a, b, axis=1)

Solution

  1. Step 1: Recall np.in1d() parameter order

    The first argument is the array to test membership for, the second is the array to check against.
  2. Step 2: Evaluate each option

    np.in1d(a, b) uses correct order: np.in1d(a, b). np.in1d(b, a) reverses arrays, np.in1d(a == b) uses invalid syntax, np.in1d(a, b, axis=1) uses unsupported axis parameter.
  3. Final Answer:

    np.in1d(a, b) -> Option B
  4. Quick Check:

    Correct syntax = np.in1d(a, b) [OK]
Hint: First array is tested, second array is reference [OK]
Common Mistakes:
  • Swapping the order of arrays in np.in1d()
  • Adding unsupported parameters like axis
  • Using comparison operators inside np.in1d()
3. What is the output of the following code?
import numpy as np
x = np.array([1, 3, 5, 7])
y = np.array([3, 4, 5])
result = np.in1d(x, y)
print(result)
medium
A. [False True True False]
B. [True False True False]
C. [False True False False]
D. [True True True True]

Solution

  1. Step 1: Check each element of x against y

    1 in y? No (False), 3 in y? Yes (True), 5 in y? Yes (True), 7 in y? No (False).
  2. Step 2: Form the boolean array

    Result is [False, True, True, False].
  3. Final Answer:

    [False True True False] -> Option A
  4. Quick Check:

    Membership booleans = [False True True False] [OK]
Hint: Check each element one by one for membership [OK]
Common Mistakes:
  • Mixing up True and False positions
  • Assuming np.in1d returns matching elements instead of booleans
  • Forgetting to import numpy
4. The following code throws an error. What is the mistake?
import numpy as np
x = [1, 2, 3]
y = np.array([2, 3, 4])
result = np.in1d(x, y, axis=0)
print(result)
medium
A. np.in1d() requires both inputs to be lists.
B. x should be converted to a NumPy array before using np.in1d().
C. np.in1d() does not accept the 'axis' parameter.
D. The arrays x and y must have the same shape.

Solution

  1. Step 1: Check np.in1d() parameters

    np.in1d() accepts only two main parameters: the test array and the array to check against. It does not support an 'axis' parameter.
  2. Step 2: Identify the error cause

    Passing axis=0 causes a TypeError because it's not a valid argument.
  3. Final Answer:

    np.in1d() does not accept the 'axis' parameter. -> Option C
  4. Quick Check:

    Invalid parameter = np.in1d() does not accept the 'axis' parameter. [OK]
Hint: np.in1d() only takes two main arguments [OK]
Common Mistakes:
  • Trying to use axis parameter with np.in1d()
  • Assuming input types must match exactly
  • Thinking np.in1d() requires both inputs as arrays
5. You have two arrays:
data = np.array([10, 20, 30, 40, 50])
filter_vals = np.array([20, 40, 60])

You want to create a new array containing only elements from data that are present in filter_vals. Which code snippet correctly achieves this?
hard
A. filtered = data[np.in1d(data, filter_vals)]
B. filtered = filter_vals[np.in1d(filter_vals, data)]
C. filtered = np.in1d(data, filter_vals)
D. filtered = data[filter_vals]

Solution

  1. Step 1: Use np.in1d() to get boolean mask

    np.in1d(data, filter_vals) returns a boolean array marking elements of data present in filter_vals.
  2. Step 2: Use boolean mask to filter data

    Indexing data with this boolean mask selects only matching elements.
  3. Final Answer:

    filtered = data[np.in1d(data, filter_vals)] -> Option A
  4. Quick Check:

    Boolean mask indexing = filtered = data[np.in1d(data, filter_vals)] [OK]
Hint: Use np.in1d() mask to index original array [OK]
Common Mistakes:
  • Indexing filter_vals instead of data
  • Using np.in1d() without indexing
  • Trying to index with filter_vals directly