我有一个索引的Pandas系列,条目数为2万。每个条目都是一个字符串数组。
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]