w3resource

NumPy: Find the closest value (to a given scalar) in an array


15. Find Closest Value to Scalar

Write a NumPy program to find the closest value (to a given scalar) in an array.

Sample Solution:

Python Code:

# Importing the NumPy library as np
import numpy as np

# Creating an array 'x' containing numbers from 0 to 99 using arange() function
x = np.arange(100)

# Displaying the original array 'x'
print("Original array:")
print(x)

# Generating a random floating-point number 'a' between 0 and 100
a = np.random.uniform(0, 100)

# Displaying the value used for comparison
print("Value to compare:")
print(a)

# Finding the index of the element in array 'x' closest to the generated value 'a'
index = (np.abs(x - a)).argmin()

# Displaying the element in 'x' that is closest to the generated value 'a'
print(x[index]) 

Sample Output:

Original array:                                                        
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24                                                                   
 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4 8 49                                                                   
 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 7 3 74                                                                   
 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9
8 99]                                                                  
Value to compare:                                                      
38.09066280756759                                                      
38   

Explanation:

In the above exercise –

x = np.arange(100): This line generates a 1D array of integers from 0 to 99 (inclusive).

a = np.random.uniform(0, 100): This line generates a random float number between 0 and 100 (not including 100).

index = (np.abs(x - a)).argmin(): This line calculates the absolute difference between the random float number a and each integer in the array x, and then finds the index of the minimum absolute difference. This index corresponds to the closest integer value to a in the array x.

print(x[index]): This line prints the closest integer value to the random float number a by indexing the array x with the calculated index.


For more Practice: Solve these Related Problems:

  • Write a function that finds the value in an array that is closest to a specified scalar using vectorized operations.
  • Create a solution that returns both the closest value and its index from the array.
  • Implement a method that computes the absolute differences and uses np.argmin to locate the nearest value.
  • Test the function with target values that are exactly equal, slightly off, and far from any array elements.

Go to:


PREV : Cartesian to Polar Conversion.
NEXT :n Largest Values in Array.

Python-Numpy Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.