我正在使用numpy并正在开发spyder。

让我们假设我们有某种“扫描”功能,可以为我们提供某个城市房屋的GPS位置。

扫描完成后,将生成一个.txt文件,其中包含与所述房屋的GPS位置相对应的(x,y)坐标。

假设我在FIRST文件中得到了大约40套(x,y)坐标。

现在想象一下,我们再次运行相同的“扫描”,生成第二个文件。
在理想情况下,两个文件都将包含完全相同的坐标,并且顺序完全相同。

但是,(!)就是问题所在,有时可能会发生“扫描”错误而使房屋消失的情况,因此file1将包含40(x,y)个坐标对,而file2将包含39(x,y)对。 (见下文)

请注意,下面的扫描nr2错过了房屋nr.3,而是将房屋nr.4标记为3。从现在开始,这两个扫描列表“不同步”为1,这是我需要解决的问题。

原始文件1:

1        Location: 28802.6    ,   128823.3
2        Location: 47405.0    ,   74931.0
3        Location: 49952.4    ,   117478.8
4        Location: 50901.7    ,   42166.5
...
40       Location: 143924.5   ,   143847.7
41       Location: 143821.0   ,   143845.4
42       Location: 141584.4   ,   143842.4


原始File2:

1        Location: 28802.6    ,   128823.3
2        Location: 47405.0    ,   74931.0
3        Location: 50901.7    ,   42166.5
...
39       Location: 143924.5   ,   143847.7
40       Location: 143821.0   ,   143845.4
41       Location: 141584.4   ,   143842.4


想要的结果array1 / list1:

[28802.6, 128823.3],
[47405.0, 74931.0],
[49952.4, 117478.8],
[50901.7, 42166.5],
...
[143924.5,   143847.7,],
[143821.0,   143845.4],
[141584.4,   143842.4]


想要的结果array2 / list2:

[28802.6, 128823.3],
[47405.0, 74931.0],
[0, 0],
[50901.7, 42166.5],
...
[143924.5,   143847.7,],
[143821.0,   143845.4],
[141584.4,   143842.4]


我最终想要实现的是将每个文件的(x,y)坐标插入2d数组或2d列表中,但方式是两个数组中的行都对应于SAME房屋。

这样我就知道,如果两次扫描都扫描了房屋nr.2(目前是这种情况),则array1中的行号2和array2中的行号2包含对应于同一房屋的(x,y)坐标。

并且如果file1包含文件3中未包含的房子3的坐标,这意味着scan2必须错过了房子,我理想上希望我的代码将扫描1中的坐标输入到array1的第3行中,但由于scan2没有结果在此处,如上所示,仅在array2第3行中输入零。

最后,从现在开始,我希望我能明确说明自己的目标。...踢手:如果我进行两次以上扫描会怎样?例如3或5?
还要记住,很可能file1将缺少将包含在file2中的房屋。一切皆有可能。

我不是在寻找完整的解决方案,这篇文章更多是关于如何解决此问题的问题。因为如果我使用for循环,这将非常麻烦。我有点希望有一些特殊的python命令可以在这里为我提供帮助。

同样,我正在使用numpy并正在开发spyder。

最佳答案

我建议您对坐标(x,y)进行散列以产生一个标识每个房屋的md5字符串。

import hashlib
coordinates = [28802.6, 128823.3]
m = hashlib.md5()
m.update(",".join([str(n) for n in coordinates]).encode('utf-8'))
m.hexdigest()


现在每个房屋都可以有一个“名称”,您不必担心数组中房屋的索引,您实际上应该在读取文件时对坐标进行哈希处理,然后将该信息保存在数组中。如果要跟踪哪个文件中丢失了哪些房屋,请保留所有生成的哈希的列表,并在每个数组中检查哪些哈希丢失后,可以使用所需的任何值将它们插入到数组中。

关于python - 对多个文档进行排序/比较的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58050737/

10-12 23:18