w3resource

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


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.

Python-Numpy Code Editor: