在一定的坐标范围内查找唯一的元素

2024-06-24 13:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据x-y坐标确定列表中的所有唯一元素。该列表的结构如下所示:

List =[[[Picture1, [X-Coordinate, Y-Coordinate]], [Picture1, [X-Coordinate, Y-Coordinate]]],
      [[Picture2, [X-Coordinate, Y-Coordinate]], [Picture2, [X-Coordinate, Y-Coordinate]]],
      ....]

以下是实际列表:

MyList = [[['IMG_6094.jpg', [2773.0, 240.0]], ['IMG_6094.jpg', [2773.0, 240.0]]],
         [['IMG_6096.jpg', [1464.0, 444.0]], ['IMG_6096.jpg', [3043.0, 2358.0]]],
         [['IMG_6088.jpg', [1115.5, 371.5]]],
         [['IMG_6090.jpg', [3083.0, 1982.5]], ['IMG_6090.jpg', [3083.0, 1982.5]]],
         [['IMG_6093.jpg', [477.0, 481.0]], ['IMG_6093.jpg', [450.0, 487.5]]]]  

正如您所看到的,有时有些元素在图片中具有相同的坐标,或者至少彼此非常接近。我需要做的是根据一个坐标扔掉所有非唯一或非常接近的元素(不管是x还是y)。 列表应如下所示:

MyList = [[['IMG_6094.jpg', [2773.0, 240.0]], --- thrown out because copy of first element ---],
         [['IMG_6096.jpg', [1464.0, 444.0]], ['IMG_6096.jpg', [3043.0, 2358.0]]],
         [['IMG_6088.jpg', [1115.5, 371.5]]],
         [['IMG_6090.jpg', [3083.0, 1982.5]], --- thrown out because copy of first element---],
         [['IMG_6093.jpg', [477.0, 481.0]], --- thrown out because e.g. abs(x-coordinates) < 30]  

有人能提供一个优雅的解决方案吗

提前谢谢


Tags: of元素coordinate列表imgelementoutfirst
1条回答
网友
1楼 · 发布于 2024-06-24 13:19:56

为img创建一个与其相邻的innteger列表,而不是为img上的其他点,检查它们的x或y是否在列表中,如果是,则将它们添加到移除列表中 顺便说一句,当使用索引删除时,请确保从最大的x,y开始,这样在删除它们之前就不会更改较低的点索引

 remove = []
 close = 30
 for i in range(len(MyList)):
     xList = []
     yList = []
     for j in range(len(MyList[i])):
         if int(MyList[i][j][1][0]) in xList or int(MyList[i][j][1][1]) in yList:
             remove.append([i,j])
             continue
         x = int(MyList[i][j][1][0])
         y = int(MyList[i][j][1][1])
         xList+= list(range(x-close,x+close))
         yList+= list(range(y-close,y+close))

相关问题 更多 >