gpt4 book ai didi

python - 在大矩阵中搜索值

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:19 24 4
gpt4 key购买 nike

我正在使用 python 3.5,并且正在编写一个处理大型电子表格文件的脚本。电子表格的每一行都包含一个短语和几个其他相关值。我将文件解析为矩阵,但对于示例文件,它有超过 3000 行(甚至更大的文件也应该在预期范围内)。我还有一个 100 个单词的列表。我需要搜索每个单词,矩阵的哪一行在其字符串中包含该单词,并根据该值打印一些平均值。

目前,我正在迭代矩阵的每一行,然后检查字符串是否包含任何提到的单词,但此过程需要 3000 次迭代,每个迭代 100 次检查。有没有更好的方法来完成这个任务?

最佳答案

从长远来看,我会鼓励您使用更适合该任务的东西。例如,SQL 数据库。

但是如果您坚持编写自己的 Python 解决方案,您可以采取以下一些措施来优化它:

使用集合。集合具有非常有效的成员资格检查。

wordset_100 = set(worldlist_100)

for row in data_3k:
word_matches = wordset_100.intersect(row.phrase.split(" "))
for match in word_matches:
# add to accumulator
# this loop will be run less than len(row.phrase.split(' ')) times
pass

并行化。

from multiprocessing import Pool
from collections import defaultdict


def matches(wordset_100, row):
return wordset_100.intersect(row.phrase.split(" ")), row


if __name__ == "__main__":
accu = defaultdict(int)
p = Pool()
wordset_100 = set(worldlist_100)
for m, r in p.map(matches, data_3k):
for word in m:
accu[word] += r.number

关于python - 在大矩阵中搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962691/

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