python - 有效地将函数应用于 Pandas 系列中的每个可能配对
问题描述
我有一个包含 20k 个条目的索引熊猫系列。每个条目都是一个字符串数组。
id | value
0 | ['abc', 'abc', 'def']
1 | ['bac', 'c', 'def', 'a']
2 | ...
...|
20k| ['aaa', 'rzt']
我想将每个条目(字符串列表)与该系列的每个其他条目进行比较。我有一个复杂的比较函数,它接受两个字符串列表并返回一个浮点数。
结果应该是一个矩阵。
id | 0 | 1 | 2 | ... | 20k
0 | 1 0.5 0.4
1 | 0.5 1 0.2
2 | 0.4 0.2 1
...|
20k|
计算每个矩阵元素的结果的双循环使我的计算机花费了 3 个多小时。如何有效地应用/并行化我的比较函数?我尝试使用 numpy 数组进行广播但没有成功(没有加速)。
values = df['value'].values
broadcasted = np.broadcast(values, values[:,None])
result = np.empty(broadcasted.shape)
result.flat = [compare_function(u,v) for (u,v) in broadcasted]
解决方案
推荐阅读
- tensorflow - 有没有办法将 Tensorflow 记录文件保存在内存中?
- javascript - AngularJS控制器包装在范围内时不显示数据
- haskell - 为什么输入中的箭头在 proc 块中的箭头命令中不可用?
- java - 您如何将 ListView 保存为文本文档而不是将其加载回程序中
- javascript - 带有 java 脚本的 DropDownList
- laravel - 精益雄辩的结果 ->with() 渴望加载
- python - 如何在每一行中的特定字符串之后计算文本文件中的唯一单词?
- php - Symfony Fileloader 找不到现有的类
- javascript - 处理 Flask 文件上传/下载中的编码
- html - CSS - 文本在顶部对齐,不管 flexbox 属性如何