有效地将一个函数应用于系列中的每个可能的对

2024-09-30 01:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个索引熊猫系列,有20k个条目。每个条目都是一个字符串数组。你知道吗

id | value

0  | ['abc', 'abc', 'def']
1  | ['bac', 'c', 'def', 'a']
2  | ...
...|
20k| ['aaa', 'rzt']

我想将每个条目(字符串列表)与序列中的每个其他条目进行比较。我有一个复杂的比较函数,它接受两个字符串列表并返回一个float。你知道吗

结果应该是一个矩阵。你知道吗

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]

Tags: 函数字符串id列表valuedefnp条目

热门问题