繁体   English   中英

如何匹配两个长度相同的列表

[英]How to match two list with the same length

提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文

我有两个长度相同的列表。 我想在 df 和 df2 中找到匹配项。

   df = [[[1, 5,7,9,12,13,17],
   [2,17,18,23,32,34,45],
   [3,5,11,33,34,36,45]],
  [[6,21,22,50,56,58,72],
  [7,5,12,13,55,56,74],
  [8,23,24,32,56,58,64]]]

    df2 = [[[100,5,12,15,27,32,54],
    [120,10,17,18,19,43,55],
    [99,21,32,33,34,36,54]],
   [[41,16,32,45,66,67,76],
    [56,10,11,43,54,55,56],
    [77,12,16,18,19,21,23]]]
    

我希望我的 output 是这样的或类似的。

    output = [[[[5,12,],[17]],
      [[17,18],[32,34,36]]],
      [[[55,56],[32]],[[56]]]

所以这个问题很难,因为你为了比较 arrays 你需要计算所有可能首先出现的序列。 所以当你处理大 arrays 时,这个任务会花费很长时间。

为了简单起见,我的方法没有以任何方式进行优化,我试图坚持使用基本的 for 循环,只是强行通过它。

首先,我将计算 arrays 的所有可能组合并将它们存储在两个列表( sequences_1sequences_2 )中。

之后,我将比较所有序列并将匹配项存储在一个集合中。 使用集合会自动删除所有重复项。 Matches现在包含两个 arrays 的所有可能匹配项。

df = [
    [[1, 5, 7, 9, 12, 13, 17], [2, 17, 18, 23, 32, 34, 45], [3, 5, 11, 33, 34, 36, 45]],
    [[6, 21, 22, 50, 56, 58, 72], [7, 5, 12, 13, 55, 56, 74], [8, 23, 24, 32, 56, 58, 64]],
]

df2 = [
    [[100, 5, 12, 15, 27, 32, 54], [120, 10, 17, 18, 19, 43, 55], [99, 21, 32, 33, 34, 36, 54]],
    [[41, 16, 32, 45, 66, 67, 76], [56, 10, 11, 43, 54, 55, 56], [77, 12, 16, 18, 19, 21, 23]],
]

sequences_1 = []

for el in df:
    for lis in el:
        length = len(lis)
        for i in range(0, length):
            for n in range(i + 1, length + 1):
                sequences_1.append(lis[i:n])

sequences_2 = []

for el in df2:
    for lis in el:
        length = len(lis)
        for i in range(0, length):
            for n in range(i + 1, length + 1):
                sequences_2.append(lis[i:n])

matches = set()

for seq_1 in sequences_1:
    for seq_2 in sequences_2:
        if seq_1 == seq_2:
            matches.add(tuple(seq_1))
print(matches)

作为比赛,我得到:

{(5,), (11,), (17,), (23,), (17, 18), (32,), (55, 56), (56,), (5, 12), (34, 36), (34,), (33, 34, 36), (55,), (33, 34), (12,), (18,), (21,), (33,), (36,), (45,)}

这包含您作为可能的 output 提供的所有匹配项,以及您在发布问题时错过的其他匹配项。

问题未解决?试试本站强大的搜索功能,搜索: 如何匹配两个长度相同的列表
将字符串的长度与列表中相同长度的字符串匹配

[英]match length of string with a string with the same length in a list

所以,如果我有这个: a = "hi" b = ["hello there", "goodbye", "nice to meet you"] 因此,如果len(a)为2,那么是否有可能在b中找到相同长度的字符串? 在这种情况下是“你好” 对于“ hi”,我是在数字符,对于“ ...

比较两个不同长度的列表,找到匹配并将匹配与第一个列表中的值相加

[英]Comparing two lists not with same length, finding matches and appending the match with value from first list

请考虑具有以下值的这两个列表。 列表一(有几百个值): 列表二(有几千个值): 现在我必须检查这两个数组,看看是否有一些索引匹配。 确切地说,我想确定list_one[i] == list_two[i][3] 。 在我发现匹配之后,我想将list_one中的值与list ...

如何匹配两个不等长的numpy数组?

[英]how to match two numpy array of unequal length?

我有两个一维numpy数组。 长度不相等。 我想对彼此靠近的元素进行配对(array1_elemnt,array2_element)。 让我们考虑以下示例 预期的结果是 重要的是要注意,剩下5个。 它可以很容易地通过循环来完成,但是我有非常大的数组。 我考虑过使用最近的 ...

如何合并两个相同长度的列表,并通过替换值来保留长度

[英]How to merge two lists of the same length, and retain the length by replacing values

我有两个二进制整数列表: 我想合并这两个列表以创建一个如下所示的新列表: 如果 mylist1 中具有相同索引的元素是“1”,则基本上将 mylist2 中的元素从“0”更改为“1”。 到目前为止,我已经尝试过这样的事情,但我知道它只是创建了一个包含所有一个 int 的列表: 我在这里画一个空白。 ...

如何添加两个不同长度的列表?

[英]How to add two list with different length?

我试图从数组“x”中提取第一个和最后一个元素,然后重复五次,最后连接到原始的“x”。 错误:操作数不能与形状一起广播 (5,) (1000,) 这是代码 ...

如何匹配来自不同数据帧和不同长度的两列?

[英]How to match two columns from different Dataframes and with different length?

我已经生成了df1和df2。 DF1 DF2 这两个数据帧都有一个公共列df1[TB_DIV]和df2[DIV] 。 我想生成一个新的df3,其中包含由所有df2[DIV] df1中的df2[DIV]过滤的df1中的所有信息。 我尝试使用.isin函数使用df2信息过滤 ...

如果索引和长度都不匹配,如何合并两个数据帧?

[英]how to merge two dataframes if the index and length both do not match?

我有两个像这样的数据帧predictor_df和solution_df: 1000 ABC 1001 1 2 3 1002 4 5 6 1003 7 8 9 1004南南南 0 D 1 10 2 11 3 12 名称的原因是,使用predictor_df对它的列进行了一些分 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM