Bonjour,
Alors je me trouve dans le cas où je veux comparer chaque élément d'une première liste à chaque élément d'une deuxième liste afin de faire des stats. Sauf que le nombre d'éléments à comparer est potentiellement énorme !
Concrètement, mes 2 listes sont des matrices 2 colonnes contenant les coordonnées XY de nombreux points. Je chercher à calculer la distance entre chaque point de la liste A avec chaque point de la liste B afin de trouver, pour chaque point de A, la distance minimale avec B.
De façon simple en travaillant avec numpy et en simplifiant :
L'algo ci-dessus fonctionne mais peut être très long dès lors que les matrice A et/ou B contiennent des dizaines de milliers de points. J'ai fait pas mal de recherche sur google pour trouver d'autres façons (thread, multiprocessing, map, etc.) mais je n'arrive pas à optimiser ces calculs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for i in range(len(A)): #La jextrai les difference en X et Y pour calculer la distance : xdiff= A[i,0]-B[:,0] #la ja une liste de differences en X entre le ieme point de A et tous les points de B ydiff= A[i,1]-B[:,1] #idem en Y distanceMini=min(distance(xdiff, y diff)) # "distance" est une fonction qui va calculer la distance entre les 2 points a partir des difference de coordonnees X, Y.
D'où ma question : avez-vous des fonctions, modules, algo à me conseiller pour faire ce genre de calculs sur un grand nombre de points en python ?
J'ai l'impression que c'est un truc de base mais vraiment je suis bloqué ! Je précise que je débute en python...
Merci d'avance !!
Partager