Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python

Notez qu'il a fallu un certain temps pour récupérer la valeur la plus proche d'une certaine valeur de la liste en Python.

Exemple d'échec

J'ai vu comment utiliser la fonction searchsorted de numpy sur le net, mais cette fonction insère une valeur dans la liste. Puisqu'il s'agit d'une fonction qui renvoie l'index lors de cette opération, elle ne renvoie pas toujours l'index de la valeur la plus proche d'une certaine valeur.

** Exemple de panne réelle **

Exemple d'échec.py


# coding: utf-8

import numpy as np


def getNearestValue(list, num):
    
    #Obtenir l'index lors de l'insertion dans l'ordre croissant
    sortIdx = np.searchsorted(list, num, side='left')
    return list[sortIdx]
    

if __name__ == "__main__":

    list = [0, 0.5, 1]

    print(getNearestValue(list, 0.1))  # →0 OK
    print(getNearestValue(list, 0.4))  # →0 NG

La valeur la plus proche de «0.4» dans l'élément de liste du code ci-dessus est 0,5, mais 0 est renvoyé.

Solution

~~ Par conséquent, nous avons implémenté une fonction qui calcule la différence entre les valeurs cibles des éléments périphériques de l'index obtenu par la fonction searchsorted et extrait la valeur la plus proche d'une certaine valeur. ~~

** Addendum: 24/08/2016 ** kochory m'a donné un code qui a été grandement simplifié. Il est implémenté en calculant la différence entre une certaine valeur et les éléments de la liste et en trouvant l'indice de la valeur minimale. Je vous remercie!

getNearestValue_sample2.py


# coding: utf-8

import numpy as np


def getNearestValue(list, num):
    """
Aperçu:Une fonction qui renvoie la valeur la plus proche d'une valeur de la liste
    @param list:Tableau de données
    @param num:Valeur cible
    @return La valeur la plus proche de la valeur cible
    """

    #Calculez la différence entre l'élément de liste et la valeur cible et obtenez l'index de la valeur minimale
    idx = np.abs(np.asarray(list) - num).argmin()
    return list[idx]
    

if __name__ == "__main__":

    list = [0, 0.5, 1]
    
    print(getNearestValue(list, -0.1)) # →0
    print(getNearestValue(list, 0.1))  # →0
    print(getNearestValue(list, 0.4))  # →0.5
    print(getNearestValue(list, 0.5))  # →0.5
    print(getNearestValue(list, 0.6))  # →0.5
    print(getNearestValue(list, 0.8))  # →1
    print(getNearestValue(list, 1.2))  # →1

Recommended Posts

Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
amateur python tente de résumer la liste ②
[Python] Comment supprimer les valeurs en double de la liste
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
python / Créer un dict à partir d'une liste.
Extraire la valeur de dict ou list sous forme de chaîne de caractères
Comment trouver le premier élément qui correspond aux critères de la liste Python
Comment déterminer l'existence d'un élément sélénium en Python
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Passer la liste de Python vers C ++ par référence dans pybind11
Comment supprimer les doublons d'une liste Python tout en préservant l'ordre.
Trouvez tous les modèles pour extraire un nombre spécifique de l'ensemble
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Python amateur tente de résumer la liste ①
[Python] Qu'est-ce qu'un argument formel? Comment définir la valeur initiale
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
[Python] Comment utiliser la fonction enumerate (extraire le numéro d'index et l'élément)
[Python] Compréhension de liste Différentes façons de créer une liste
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Comment ouvrir un navigateur Web à partir de python
Comment effacer un taple dans une liste (Python)
Copiez la liste en Python
Comment générer un objet Python à partir de JSON
Comment extraire le coefficient de la formule minute
Remarque Python: lors de l'attribution d'une valeur à une chaîne
[Algorithm x Python] Comment utiliser la liste
[Python] Lancer un message sur le canal Slack
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Utilisez PIL en Python pour extraire uniquement les données souhaitées d'Exif
[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Extraire des éléments (en utilisant une liste d'index) comme NumPy d'une liste / taple Python
[Astuces Python] Comment récupérer plusieurs clés avec la valeur maximale du dictionnaire
Comment obtenir une liste de fichiers dans le même répertoire avec python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Comment récupérer la nième plus grande valeur en Python
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Comment écrire un type liste / dictionnaire de Python3
Points Python du point de vue d'un programmeur en langage C
Je voulais utiliser la bibliothèque Python de MATLAB
Choses à noter lors de l'initialisation d'une liste en Python
De l'achat d'un ordinateur à l'exécution d'un programme sur python
La première étape pour obtenir Blender disponible à partir de Python
[Python] Je veux faire d'une liste imbriquée un taple
Envisagez la conversion de Python récursif en non récursif
Comment publier un ticket depuis l'API Shogun
Script Python qui crée un fichier JSON à partir d'un fichier CSV
[Python] Comment afficher les valeurs de liste dans l'ordre
[Python] Comment appeler une fonction de c depuis python (édition ctypes)