We use np.searchsorted() to find where to insert a value into a sorted list so the list stays sorted. It helps us quickly find the right spot without sorting again.
np.searchsorted() for insertion points 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.searchsorted(sorted_array, values, side='left', sorter=None)
sorted_array must be sorted for correct results.
side='left' finds insertion point before existing entries; side='right' after.
Examples
NumPy
import numpy as np arr = np.array([1, 3, 5, 7]) pos = np.searchsorted(arr, 4) print(pos)
NumPy
pos_right = np.searchsorted(arr, 5, side='right') print(pos_right)
NumPy
values = [0, 2, 6, 8] positions = np.searchsorted(arr, values) print(positions)
Sample Program
This program finds where to insert new ages into a sorted list of ages to keep it sorted.
NumPy
import numpy as np # Sorted array of ages ages = np.array([18, 22, 25, 30, 35]) # New ages to insert new_ages = np.array([20, 25, 40]) # Find insertion points positions = np.searchsorted(ages, new_ages) print('Ages:', ages) print('New ages:', new_ages) print('Insertion positions:', positions)
Important Notes
If the array is not sorted, results will be incorrect.
Use side='right' to insert after existing equal values.
You can insert multiple values at once by passing an array of values.
Summary
np.searchsorted() finds where to insert values in a sorted array.
It helps keep data sorted without re-sorting after insertion.
Use side to control insertion before or after equal values.
Practice
1. What does the
np.searchsorted() function do in NumPy?easy
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 DQuick 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
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 BQuick 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
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 AQuick 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
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 AQuick 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
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 CQuick Check:
Insert after equals = side='right' = C [OK]
Hint: Use side='right' to insert after equal values [OK]
Common Mistakes:
- Using side='left' inserts before equal values
- Assuming default side inserts after equals
- Using invalid side='both'
