用python构建矩阵

用python构建矩阵,python,list,text,matrix,Python,List,Text,Matrix,这里是Python初学者。 我有两个文本文件,它们的制表符分隔信息格式相同。它们包含3列(标识符、染色体和位置)的行,例如: 文件1: 2323 2 125 2324 3 754 。。。等 文件2: 2323 2 150 2324 3 12000 。。。等 我想创建一个列表或矩阵(不确定什么是最好的,或者如何工作,可能是一个列表列表,成为一个矩阵?!),通过遍历一个文件中的每个标识符(每行的第一列)并将其与其位置(第3列)相关联,然后在下一个文件中找到匹配的标识符,并保存另一个位置(第3列)

这里是Python初学者。 我有两个文本文件,它们的制表符分隔信息格式相同。它们包含3列(标识符、染色体和位置)的行,例如:

文件1:

2323 2 125
2324 3 754
。。。等

文件2:

2323 2 150
2324 3 12000
。。。等

我想创建一个列表或矩阵(不确定什么是最好的,或者如何工作,可能是一个列表列表,成为一个矩阵?!),通过遍历一个文件中的每个标识符(每行的第一列)并将其与其位置(第3列)相关联,然后在下一个文件中找到匹配的标识符,并保存另一个位置(第3列)在这个文件中。因此,最终每个标识符将与来自两个不同文件的两个不同位置相关联

这就是我需要帮助的地方。在下一步中,我将查找位置之间数字差异最大的标识符

非常感谢任何帮助、提示或解决方案,我是一名python初学者,具有非常基础的知识

非常感谢


Rubal

您的问题可以有几个答案:

  • 若你们打算对矩阵进行广泛的计算,我建议你们去看看这个非常有效的库。您可以看到如何使用numpy创建矩阵
  • 对你的问题的第二个可能的答案是使用库(我已经得出结论,你正在研究染色体)
  • 可以使用Python嵌套列表创建矩阵
  • 下面是一段代码片段,说明如何执行此操作(假设我们正在读取文件2)

    然后可以获取所创建矩阵的值:

    matrix[0]     # First row == [2323, 2, 150]
    matrix[0][1]  # Second column, first row == 2
    

    您的问题可以有几个答案:

  • 若你们打算对矩阵进行广泛的计算,我建议你们去看看这个非常有效的库。您可以看到如何使用numpy创建矩阵
  • 对你的问题的第二个可能的答案是使用库(我已经得出结论,你正在研究染色体)
  • 可以使用Python嵌套列表创建矩阵
  • 下面是一段代码片段,说明如何执行此操作(假设我们正在读取文件2)

    然后可以获取所创建矩阵的值:

    matrix[0]     # First row == [2323, 2, 150]
    matrix[0][1]  # Second column, first row == 2
    

    您可以使用以标识符为键、以位置列表为值的字典。然后,您可以计算位置之间的差异,并将其作为列表的第三个元素。然后,您可以遍历字典,在字典值的[2]位置找到最大值

    d = {}
    for each line in file1:
       d[identifier] = [position]
    
    for each line in file2:
       d[identifier].append(position)
       d[identifier].append(d[identifier][1]-d[identifier][0])
    
    maxDiff = 0
    for x in d:
        value = d[x][2]
        if value > maxDiff:
            maxDiff = value
    

    您可以使用以标识符为键、以位置列表为值的字典。然后,您可以计算位置之间的差异,并将其作为列表的第三个元素。然后,您可以遍历字典,在字典值的[2]位置找到最大值

    d = {}
    for each line in file1:
       d[identifier] = [position]
    
    for each line in file2:
       d[identifier].append(position)
       d[identifier].append(d[identifier][1]-d[identifier][0])
    
    maxDiff = 0
    for x in d:
        value = d[x][2]
        if value > maxDiff:
            maxDiff = value
    
    在这个解决方案中,我将文件中的信息存储为字典。键是标识符,值是包含位置的列表。然后,我根据位置列表中第一个和第二个元素之间的差值的绝对值对该字典的项进行排序。换句话说,最大的差异出现在
    项目列表的末尾

    为了使其工作,它假定
    file1
    file2
    具有相同的标识符。如果没有,您将首先需要过滤这些项,以便只挑选长度为2的值的字典条目。e、 g

    items = [(k,v) for k,v in d.items() if len(v) == 2]
    items = sorted(items, ...)
    
    在这个解决方案中,我将文件中的信息存储为字典。键是标识符,值是包含位置的列表。然后,我根据位置列表中第一个和第二个元素之间的差值的绝对值对该字典的项进行排序。换句话说,最大的差异出现在
    项目列表的末尾

    为了使其工作,它假定
    file1
    file2
    具有相同的标识符。如果没有,您将首先需要过滤这些项,以便只挑选长度为2的值的字典条目。e、 g

    items = [(k,v) for k,v in d.items() if len(v) == 2]
    items = sorted(items, ...)
    

    我不确定我是否理解您试图使用在两个文件的第3列中获得的两个值构造什么。你能澄清一下期望的输出是什么吗?它是您想要写回其中一个文件的结果,还是您将用于进一步处理的结果?我不确定我是否理解您使用两个文件第3列中的两个值试图构造的内容。你能澄清一下期望的输出是什么吗?它是您想要写回其中一个文件的结果,还是您将用于进一步处理的结果?