如果使用python 2.7在它们之间存在唯一匹配,如何获得两个不同长度列表的索引

时间:2017-08-22 03:07:57

标签: python arrays list numpy

今天我想知道如果两个列表之间存在匹配,如何获取两个列表的索引。我遇到了使用枚举和zip功能。但是如果两个列表长度相同,它们就可以工作。由于我的输入不同,我想获得两个列表的索引。

# Simulated Time(msec)  Simulated O/p    Actual Time(msec)   Actual o/p
      0                       12.57            0                  12.55
      50                      12.58            100                12.56
     100                      12.55            200                12.60
     150                      12.59            300                12.45
     200                      12.53            400                12.59
     250                      12.87            500                12.78
     300                      12.50            600                12.57
     350                      12.75            700                12.66
     400                      12.80            800                12.78

   ......                    ......          .....               ......

此外,我的模拟数据位于不同的文件中,并以50Hz的速率生成数据,与我的实际数据不同。因此,模拟数据的长度比实际数据长。但实际数据存在于模拟数据中。我想得到这两个列表的索引。示例模拟时间(毫秒)100(i = 2)与实际时间的indice(j = 1)匹配。如果我得到i和j的索引,那么我可以比较该特定时刻的相应模拟输出和实际输出。

最后我想迭代到模拟时间结束。

请建议我该如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果simact包含唯一值,则可以使用numpy set例程np.in1d来执行此操作:

sim=np.unique(np.random.randint(0,10,3))*10 #sample
act=np.unique(np.random.randint(0,10,5))*10 #sample

i=np.arange(len(sim))[np.in1d(sim,act)]
j=np.arange(len(act))[np.in1d(act,sim)]


print(sim,act,i,j)
#[40 50 70] [10 30 40 50] [0 1] [2 3]