0
votes

Comment puis-je obtenir la distance la plus proche entre un tuple et une liste de tuples?

Je veux trouver le tuple à l'intérieur d'une liste la plus proche de mon tuple donné.

J'ai une liste de coordonnées et un point et j'ai besoin de trouver l'élément de la liste la plus proche de mon point. < / p>

quelque chose comme ceci: xxx

sortie = la distance la plus proche

J'ai essayé d'utiliser SCIPY .spatial.distance.ucuclidien Mais cela donne l'erreur:

TypeError: Les indices de liste doivent être des entiers ou des tranches, pas du tuple


1 commentaires

Dans la première itération C est le tuple (455, 12) -. Qu'attendez-vous cordons [(455, 12)] être?


4 Réponses :


1
votes

Essayez pour C dans la plage (len (cordes)) . Comme vous l'êtes, vous prenez des éléments de liste dans C , pas d'index.


1 commentaires

len (cordons) renvoie un entier, ce qui n'est pas démarré (ce code soulève donc une erreur ...)



1
votes

Vous vous transmettez l'objet C comme un index. Vous pouvez le faire en utilisant énuméré si vous souhaitez utiliser l'index ou simplement le faire la manière pythononique: xxx

Vous devez enregistrer les distances et trouver le minimum aussi.


0 commentaires

4
votes

c code> est le tuple dans la liste des coordonnées, ce n'est pas l'index, alors utilisez-le au lieu de cordons [C] code>, vous pouvez également utiliser min code> avec une expression génératrice pour obtenir ce que vous voulez:

99.29753269845128


1 commentaires

Pas besoin de générateurs en min si vous utilisez la touche argument;)



4
votes

Python min code> permet de spécifier une fonction d'argument unique qui renvoie une valeur (la touche " code>") et il renvoie l'élément qui le minimise.

min(cords, key=lambda c : distance.euclidean(c, point))


3 commentaires

Cela donnera le point avec la distance minimale pour obtenir la distance minimale que vous devrez le calculer à nouveau.


OP: "Je veux trouver le tuple à l'intérieur d'une liste la plus proche de mon tuple donné"


Ensuite, j'ai été trompé par sortie = distance la plus proche dans la question.