gpt4 book ai didi

python - 如何在另一个更大的数组(6 亿个元素)中查找一个大数组(100 万个元素)的元素

转载 作者:行者123 更新时间:2023-11-28 20:56:07 26 4
gpt4 key购买 nike

我有一个非常大的文件(包含 dbSNP ID),包含 100 万行,每行包含一个字符串,另一个更大的文件 (.vcf) 包含 6 亿行,每行包含 7-8 列。

我想找到小文件的每一行在大文件中的第一次出现,使我的程序的暴力复杂度为 1,000,000 * 600,000,000 次。我想要一种更快、内存占用更少的方法来执行此操作。我是 python 中的多处理或并行编程的新手,我不确定如何在不使用它们的情况下解决这个问题。

我尝试使用 numpypandas 库对两个文件的较小子集执行类似的操作:

import numpy as np
import pandas as pd

BigFile = pd.Series(arrayOfRowsOfBiggerFile)
SmallFile = pd.Series(arrayOfRowsOfSmallerFile)
FinalList = SmallFile.map(lambda x: np.where(A==x)[0][0]).tolist()

这需要永远执行,我相信可以用 python 多处理很好地处理。

最佳答案

如果我没理解错的话,您实际上是在执行一个join 操作:您希望 VCF 中的所有行的键(在本例中为 RSID)出现在您的“较小”文件中。请在此处查看文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html

你的代码看起来像这样:

dbsnp = pd.read_csv('path/to/dbsnp', index_col='rsid', ...)
rsids_of_interest = pd.read_csv('path/to/smaller_file', ...)

subset_of_dbsnp = dbsnp.join(rsids_of_interest, how='inner', ...)

关于python - 如何在另一个更大的数组(6 亿个元素)中查找一个大数组(100 万个元素)的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com