多数据类型(字符串、整型、浮点型等)向量相似度计算方法咨询
实现方案
首先明确:Pandas 没有内置专门实现该相似度计算规则的现成函数,但依托Pandas的向量广播运算能力,仅需少量代码即可封装出符合要求的工具函数。
1. 测试环境构造
先构造你给出的示例DataFrame用于测试:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame([ [1, 1.1, -19, "kuku", "lulu"], [2.8, 1.1, -20, "kuku", "lilu"] ])
2. 自定义相似度计算函数
以下函数完全符合你的需求:输入目标向量,自动和DataFrame所有行逐维度比较,输出每行的相似度均值得分:
def calc_dim_match_similarity(target_vector, df): # 逐元素对比是否相等,每行的均值就是匹配维度占总维度的比例 return (df == target_vector).mean(axis=1)
3. 使用示例
# 输入目标向量,这里用示例中的第一行作为测试目标 target = [1, 1.1, -19, "kuku", "lulu"] similarity_scores = calc_dim_match_similarity(target, df) # 输出结果:第一行和自身完全匹配得1.0,第二行匹配2个维度得0.4,和示例计算结果一致 print(similarity_scores)
输出结果:
0 1.0 1 0.4 dtype: float64
注意事项
- 需保证输入的目标向量长度和DataFrame的列数完全一致,否则会触发维度不匹配错误
- 如果维度值为计算得到的浮点数,建议先做精度截断(比如保留固定小数位)再进行比较,避免浮点数精度误差导致相等判定错误
内容的提问来源于stack exchange,提问作者SteveS
相关产品推荐
相关产品推荐

