提取匹配坐标和数组索引 - python

Extract matching coordinates and index of arrays - python

我有以下数组,a 和 b 中的每个元素都应该与 Lon 和 Lat 坐标相关联,a 和 b 被称为坐标的 ID,数据可以包含负浮点值:

a = ['1','2','3','4','5','6', '7', '8', '9', '10']
Lon1 = [2, 2, 5, 7, 1, 8, 2, 4, 7, 1]
Lat1 = [1, 2, 1, -4, 4, 7, 2, 8, 3, 4]

b = ['a','b','c','d','e','f', 'g', 'h']
Lon2 = [2, 7, 1, 8, 4]
Lat2 = [1, -4, 4, 7, 8]

我尝试了不同的方法来获得我需要的结果,但它们遍历了所有值,我感兴趣的结果是严格从第一组数组 Lon1、Lat2 中提取,它们出现在 Lon2、Lat2 中使用 a 中的元素名称并忽略 b.

所需的结果是三个新数组,其值:

c = ['1','4','5','6','8']
Lon3 = [2, 7, 1, 8, 4]
Lon3 = [1, -4, 4, 7, 8]

这只是示例数据,我正在处理一组类似的 2000 个点,如果它们的坐标与较小的一组点匹配,我需要提取它们的 ID。

我尝试了 searchsorted 并尝试使用 if lon1 = lon2 创建嵌套的 for 循环,然后使用 a[i] 附加一个新列表,但这也不起作用。我还尝试创建一个枚举 a 并将 b 用作集合的函数,但它似乎只有 return 5 个值,我可以在我的数据中直观地看到有很多。

为此尝试使用 zip

c = []
Lon3 = []
Lat3 = []

cnt = 0
for lo1,la1 in zip(Lon1, Lat1):
    for lo2,la2 in zip(Lon2, Lat2):
        if (lo1 == lo2 and la1 == la2) {
            c.append(a[cnt])
            Lon3.append(lo1)
            Lat3.append(la1)

            break
        }
    cnt++