gpt4 book ai didi

python - 确定两个列表的元素分组的程度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:04 35 4
gpt4 key购买 nike

我想做的是确定两个字符串的公共(public)元素分组的程度。可能已经有一个数学函数,或者 scipy/numpy/etc 函数可以做到这一点。我只是不知道它叫什么。我用谷歌搜索了它。例如:

这个集合会有一个完美的分数(所有相似的元素都被分组):

['a','a','a','b','b','b']

也会:

['b','b','b','a','a','a']

这个系列会有一个 lesser 分数:

['a','a','b','b','b','a']

这个系列的分数会很低:

['a','b','a','b','a','b']

我可以想出几种方法来实现它,我只是想知道是否已经有针对此类定义的函数/算法。

我想也许生成一个完美分组的字符串,基于字符串中离散值的计数并计算实际字符串和完美字符串之间的 Levenshtein 距离。例如,比较:

['a','a','a','b','b','b']

到:

['b','b','b','a','a','a']

但是,我还是想看看这个算法是否已经有了名称和实现。

最佳答案

我想不出任何现有的指标,但似乎很容易构成一个指标。您要问的是计算数组中的组数。

我的指标:数组长度除以组数

定义:

def metric(lst):
L = len(lst)
n = len(list(itertools.groupby(lst, lambda x: x)))
return L/float(n) # you can omit float if python 3

groupby 将计算数组 lst 中相同元素的 block 数。您不想像通常使用 groupby 那样对其进行排序,因为您正在计算 lst 元素中的更改。然后我们用 lst 的长度除以 block 数来找到“平均 block 长度”。这应该符合您的要求。

您可能需要衡量指标。在上面的例子中,它将有利于更长的数组和更少的 block 。例如,您可以考虑 L 的平方根,以使指标遵循 yield 递减规律

关于python - 确定两个列表的元素分组的程度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55320013/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com