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
Find Insertion Points Using np.searchsorted()
📖 Scenario: Imagine you have a sorted list of exam scores. You want to find where new students' scores would fit in this list to keep it sorted.
🎯 Goal: You will learn how to use np.searchsorted() to find the correct positions to insert new scores into a sorted array.
📋 What You'll Learn
Create a sorted numpy array called sorted_scores with exact values
Create a numpy array called new_scores with exact values
Use np.searchsorted() with sorted_scores and new_scores to find insertion points
Print the resulting insertion points array
💡 Why This Matters
🌍 Real World
Finding insertion points is useful in ranking systems, scheduling, or any case where you keep data sorted and want to add new entries correctly.
💼 Career
Data scientists often need to insert new data points into sorted datasets efficiently, and <code>np.searchsorted()</code> helps with this task.
Progress0 / 4 steps
1
Create the sorted scores array
Create a numpy array called sorted_scores with these exact values: [55, 65, 75, 85, 95].
NumPy
Hint
Use np.array() to create the array with the exact values.
2
Create the new scores array
Create a numpy array called new_scores with these exact values: [60, 80, 90].
NumPy
Hint
Use np.array() again to create the new scores array.
3
Find insertion points using np.searchsorted()
Use np.searchsorted() with sorted_scores and new_scores to find the insertion points. Store the result in a variable called insertion_points.
NumPy
Hint
Call np.searchsorted() with the sorted array first, then the values to insert.
4
Print the insertion points
Print the variable insertion_points to display the positions where new scores fit in the sorted array.
NumPy
Hint
Use print(insertion_points) to show the result.
Practice
(1/5)
1. What does the np.searchsorted() function do in NumPy?
easy
A. Returns the maximum value in the array
B. Sorts the array in ascending order
C. Removes duplicate values from the array
D. Finds the index where a value should be inserted to keep the array sorted
Solution
Step 1: Understand the purpose of np.searchsorted()
This function finds the position where a new element can be inserted in a sorted array without breaking the order.
Step 2: Compare with other options
Options B, C, and D describe different functions: sorting, removing duplicates, and finding max, which are not what searchsorted does.
Final Answer:
Finds the index where a value should be inserted to keep the array sorted -> Option D
Quick Check:
Insertion index finder = A [OK]
Hint: Remember: searchsorted finds insert position, not sorting [OK]
Common Mistakes:
Confusing searchsorted with sorting functions
Thinking it removes duplicates
Assuming it returns values instead of indices
2. Which of the following is the correct syntax to find the insertion index of value 5 in a sorted array arr using np.searchsorted()?
easy
A. np.searchsorted(arr, value=5)
B. np.searchsorted(arr, 5)
C. arr.searchsorted(5)
D. np.searchsorted(5, arr)
Solution
Step 1: Recall the function signature
The correct syntax is np.searchsorted(array, value), so the array comes first, then the value.
Step 2: Check each option
np.searchsorted(arr, 5) matches the correct order. np.searchsorted(5, arr) reverses arguments. arr.searchsorted(5) is invalid because searchsorted is not a method of ndarray. np.searchsorted(arr, value=5) uses a wrong keyword argument.
Final Answer:
np.searchsorted(arr, 5) -> Option B
Quick Check:
Array first, value second = D [OK]
Hint: Remember: np.searchsorted(array, value) order [OK]
Common Mistakes:
Swapping the order of arguments
Using searchsorted as a method of array
Using incorrect keyword arguments
3. What is the output of the following code?
import numpy as np
arr = np.array([1, 3, 5, 7])
index = np.searchsorted(arr, 4)
print(index)
medium
A. 2
B. 1
C. 3
D. 4
Solution
Step 1: Understand the array and value
The array is [1, 3, 5, 7], and we want to insert 4 while keeping it sorted.
Step 2: Find the insertion index
4 fits between 3 (index 1) and 5 (index 2), so the insertion index is 2.
Final Answer:
2 -> Option A
Quick Check:
Insert 4 between 3 and 5 = 2 [OK]
Hint: Find where value fits between sorted elements [OK]
Common Mistakes:
Choosing index of smaller element
Choosing index of larger element
Confusing zero-based indexing
4. The code below throws an error. What is the mistake?
import numpy as np
arr = np.array([2, 4, 6, 8])
index = np.searchsorted(arr, side='left', 5)
print(index)
medium
A. The 'side' argument should come after the value argument
B. The array must be sorted in descending order
C. The function does not accept keyword arguments
D. The value to insert must be an array, not a scalar
Solution
Step 1: Check function argument order
np.searchsorted expects the array first, then the value, then optional keywords like side.
Step 2: Identify the error in argument placement
The code passes side='left' before the value 5, which is incorrect syntax.
Final Answer:
The 'side' argument should come after the value argument -> Option A
Quick Check:
Keyword args after positional args = A [OK]
Hint: Put keyword arguments after positional ones [OK]
Common Mistakes:
Placing keyword arguments before positional arguments
Assuming array must be descending
Thinking scalar values are invalid
5. Given a sorted array arr = np.array([1, 2, 2, 3, 4]), which code snippet will insert the value 2 after all existing 2s using np.searchsorted()?
hard
A. index = np.searchsorted(arr, 2)
B. index = np.searchsorted(arr, 2, side='left')
C. index = np.searchsorted(arr, 2, side='right')
D. index = np.searchsorted(arr, 2, side='both')
Solution
Step 1: Understand the side parameter
side='right' returns the insertion index after existing equal values; side='left' inserts before.
Step 2: Apply to the array
For value 2 in [1, 2, 2, 3, 4], side='right' gives index 3, after the two 2s.
Final Answer:
index = np.searchsorted(arr, 2, side='right') -> Option C
Quick Check:
Insert after equals = side='right' = C [OK]
Hint: Use side='right' to insert after equal values [OK]