Nous essayons de créer un groupe de coordonnées qui sont à proximité de l'autre. Pour créer ce groupe, nous devons comparer X, Y Coordonnées de tableau NUMPY avec le 1er élément de l'arrivée.
S'ils correspondons, nous stockons cela dans un tableau existant et, sinon, nous en créons un nouveau et stockons-les là-bas. P>
Nous l'avons essayé avec une boucle et extraire x et y séparément. Mais, il n'a pas fonctionné. P>
coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
(167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
(979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
(979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
(200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
(1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
(994.0796,1591.2533),(539.5005,1862.1327)]
3 Réponses :
Essayez, cela fonctionne,
for i in coordinates1:
print(i[0])
Je n'ai pas bien compris ce que vous vouliez dire, mais essayez ceci:
import numpy as np
coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
(167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
(979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
(979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
(200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
(1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
(994.0796,1591.2533),(539.5005,1862.1327)]
seen = set()
newlist = []
for item in coordinates:
t = tuple(item)
if t not in seen:
newlist.append(item)
seen.add(t)
npArray = np.array(newlist)
newlist = npArray.astype(int)
for i in newlist:
print(i)
Pouvez-vous s'il vous plaît vérifier la section de commentaire qui vous aidera à comprendre
Puisque vous recherchez des points dans un cercle, vous pouvez trouver une méthode pour le faire. Vous devrez l'adapter à vos besoins qui ne sont pas très clairs.
coordinates = list(set(coordinates))
Non, ce n'est pas utile pour moi car je ne convertit que la liste en une matrice numpy et je dois comparer que les coordonnées sont résiduaires dans une plage spécifique, puis nous les appendons dans la matrice. Par exemple, nous avons un tableau de coordonnées ([580 180], [512 323], etc. Après cela, nous prenons [580 180] de sorte que nous créons un groupe de 30 qui trouvera X_min, X_max, Y_MIN, Y_MAX pour la plage et si d'autres Les coordonnées se situent dans cette gamme Nous appendons ces tableaux dans la matrice principale et, sinon, nous créons un nouveau tableau. Nous ne voulons trouver aucun rayon de cercle.
@Trivedi Votre commentaire ici et celui de votre message principal ne sont pas très utiles pour comprendre votre problème. Sur le message principal, vous dites que c'est ce dont vous avez besoin (voir Edition); Et sur celui-ci, vous dites que ce n'est pas utile. Cependant, c'est la même approche que je modifierai simplement un peu à boucle sur les coordonnées.
Pouvez-vous envoyer votre identifiant de messagerie?
@Trivedi évidemment non. Faire un message dans lequel le problème est clairement indiqué, avec un exemple minimum pour repousuduire (et j'insiste pour reproduire, pas besoin de données réelles) votre problème, expliquez ce que vous essayez de faire, ce que l'entrée est représentant et quels la sortie est.
@Trivei je viens de remarquer cette phrase "Array [580 201] [...] Les coordonnées se situent dans la plage de 550 à 610 pour x et 171 à 231". Comparé à l'un de vos commentaires précédents, ce n'est pas un cercle de rayon 30 mais un carré centré autour de 580, 201 avec un bord de 60. Lequel est celui que vous voulez, carré ou cercle? L'approche est similaire de toute façon, c'est simplement une question de changement de condition d'inclusion.
Vous souhaitez donc comparer chaque (x, y) coordonnées à la première valeur de votre liste de coordonnées:
(580.4625,201.87183) code>. Si la (x, y) est proche de cette valeur, elle est placée par ex.l1 code> et si ce n'est pas le cas, il est placé selon E.G.l2 code>. Ai-je raison? Comment définissez-vous si (x, y) est proche de(580.4625,201.87183) code>? Dans un cercle de rayonz code>?Dupliqué possible de Recherche de lignes uniques dans Numpy.Array
Au fait, la première pour la boucle peut être remplacée par
Set (coordonnées) code>. Mais nous ne pouvons pas vous guider dans la bonne direction jusqu'à ce que nous obtenions ce que vous voulez réaliser. Peut-être que vous pourriez fournir une entrée / sortie attendue.Oui, tu as raison. Nous définissons la proximité dans un rayon 30 à partir de coordonnées données et ce n'est pas une liste que je ne convertit pas simplement la liste dans une matrice numpy pour chercher des valeurs entières. @ma
La sortie soit comme: comparaison de la matrice [580 201] Les autres coordonnées et essayez de constater que les coordonnées se situent dans une plage de 550 à 610 pour X et 171 à 231 pour Y s'ils créent un groupe de ces coordonnées sinon nous créons Un nouveau tableau, puis récursivement, nous pouvons le vérifier. Array après la recherche -> [580 201, [560 214], [552 230]].
@Trivedi Je viens de comprendre le deuxième commentaire, je vais éditer ma réponse pour inclure l'approche récursive qui créera toutes les grappes de points. Cependant, si un point est dans la gamme de 2 clusters différentes?
Eh bien, nous voyons plus tard, mais si vous faites cela que ce sera très utile pour moi. Merci