我一直在尝试加快我的代码的速度,在下面的代码中查找索引,该索引将从列表“名称”中获取一个字符串,并最终计算出它在两部分数据中的完全匹配数。

这个过程非常缓慢。我阅读了有关使用numpy数组时替换循环的信息,但不确定如何处理/采用正则表达式匹配创建矢量化版本。

x = np.empty([38000, 8000])
y = np.empty([38000, 8000])
for i in range(0, 38000):
    for j in range(0, 8000):
        x[i, j] = len(re.findall('\\b'+name[index[j]]+'\\b', data[i][1]))
        y[i, j] = len(re.findall('\\b'+name[index[j]]+'\\b', data[i][2]))


非常感谢您的见解,

最佳答案

向量化在这里对您没有多大帮助,但是避免重复工作将:

patterns = [re.compile('\\b'+name[idx]+'\\b') for idx in index]
for i, row in enumerate(data):
    for j, patt in enumerate(patterns):
        x[i, j] = len(patt.findall(row[1]))
        y[i, j] = len(patt.findall(row[2]))

关于python - 嵌套循环Numpy数组:可以向量化吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29837876/

10-11 07:00