Trouver l'élément d'une matrice le plus proche d'une valeur donnée sous python

Published: 02 mai 2017

DMCA.com Protection Status

Exemples de comment trouver l'élément d'une matrice le plus proche d'une valeur donnée sous python

Tableau 1D

Cas d'une matrice à une dimension

>>> import numpy as np
>>> value = 0.5
>>> A = np.random.random(10)
>>> A
array([ 0.47009242,  0.40242778,  0.02064198,  0.47456175,  0.83500227,
        0.53205104,  0.14001715,  0.86691798,  0.78473226,  0.91123132])
>>> idx = (np.abs(A-value)).argmin()
>>> idx
3
>>> A[idx]
0.47456175235592957

Tableau 2D

Cas d'une matrice à plusieurs dimensions

>>> A = np.random.random((4,4))
>>> A
array([[ 0.81497314,  0.63329046,  0.53912919,  0.19661354],
       [ 0.71825277,  0.61201976,  0.0530397 ,  0.39322394],
       [ 0.41617287,  0.00585574,  0.26575708,  0.39457519],
       [ 0.25185766,  0.06262629,  0.69224089,  0.89490705]])
>>> X = np.abs(A-value)
>>> idx = np.where( X == X.min() )
>>> idx
(array([0]), array([2]))
>>> A[idx[0], idx[1]]
array([ 0.53912919])
>>>

Autre exemple:

>>> value = [0.2, 0.5]
>>> A = np.random.random((4,4))
>>> A
array([[ 0.36520505,  0.91383364,  0.36619464,  0.14109792],
       [ 0.19189167,  0.10502695,  0.39406069,  0.04107304],
       [ 0.96210652,  0.5862801 ,  0.12737704,  0.33649882],
       [ 0.91871859,  0.95923748,  0.4919818 ,  0.72398577]])
>>> B = np.random.random((4,4))
>>> B
array([[ 0.61142891,  0.90416306,  0.07284985,  0.86829844],
       [ 0.2605821 ,  0.48856753,  0.55040045,  0.65854238],
       [ 0.83943169,  0.64682588,  0.50336359,  0.90680018],
       [ 0.82432453,  0.10485762,  0.6753372 ,  0.77484694]])
>>> X = np.sqrt( np.square( A - value[0] ) +  np.square( B - value[1] ) )
>>> idx = np.where( X == X.min() )
>>> idx
(array([2]), array([2]))
>>> A[idx[0], idx[1]]
array([ 0.12737704])
>>> B[idx[0], idx[1]]
array([ 0.50336359])

Références