We use np.in1d() to quickly check if elements from one list or array appear in another. It helps us find matches easily.
np.in1d() for membership testing in NumPy
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
NumPy
np.in1d(ar1, ar2, assume_unique=False, invert=False)
ar1 is the array of elements to test.
ar2 is the array of elements to check against.
Examples
NumPy
import numpy as np result = np.in1d([1, 2, 3], [2, 3, 4]) print(result)
NumPy
import numpy as np result = np.in1d(['apple', 'banana'], ['banana', 'cherry']) print(result)
invert=True.NumPy
import numpy as np result = np.in1d([10, 20, 30], [15, 20, 25], invert=True) print(result)
Sample Program
This program checks which students from the full class list submitted their homework. It prints each student's name with their submission status.
NumPy
import numpy as np # List of students who submitted homework submitted = np.array(['Alice', 'Bob', 'Charlie', 'David']) # List of all students in class all_students = np.array(['Alice', 'Eve', 'Bob', 'Frank', 'Charlie']) # Check who submitted homework submitted_mask = np.in1d(all_students, submitted) # Print results for student, did_submit in zip(all_students, submitted_mask): print(f"{student}: {'Submitted' if did_submit else 'Not Submitted'}")
Important Notes
The output is a boolean array showing True where elements of ar1 are in ar2.
Use invert=True to find elements NOT in the second array.
Setting assume_unique=True can speed up the function if you know inputs have no duplicates.
Summary
np.in1d() helps check membership of elements between arrays.
It returns a boolean array matching the first array's shape.
Useful for filtering, matching, and comparing data quickly.
Practice
1. What does the
np.in1d() function do in NumPy?easy
Solution
Step 1: Understand the purpose of np.in1d()
The function checks membership of each element in the first array against the second array.Step 2: Identify the output type
It returns a boolean array indicating True where elements are found and False otherwise.Final Answer:
Checks if elements of one array are present in another array and returns a boolean array. -> Option DQuick 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
Solution
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.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.Final Answer:
np.in1d(a, b) -> Option BQuick 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
Solution
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).Step 2: Form the boolean array
Result is [False, True, True, False].Final Answer:
[False True True False] -> Option AQuick 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
Solution
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.Step 2: Identify the error cause
Passing axis=0 causes a TypeError because it's not a valid argument.Final Answer:
np.in1d() does not accept the 'axis' parameter. -> Option CQuick 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:
You want to create a new array containing only elements from
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
Solution
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.Step 2: Use boolean mask to filter data
Indexing data with this boolean mask selects only matching elements.Final Answer:
filtered = data[np.in1d(data, filter_vals)] -> Option AQuick 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
