如何计算python中一组值的模值?

How to calculate modulus value for a set of values in python?

在一个 material 中,我找到了一个计算精度的公式,如下所示

这里a和b是一组值。在互联网上多次搜索后,我发现模数表示余数或绝对值。这里我取模数作为绝对值,我上面公式的python代码如下

import numpy as np

def intersection(lst1, lst2):
    return list(set(lst1) & set(lst2))

a = [7,21]
b = [11, 7, 27, 21]

a_intersect_b=intersection(a,b)
print(" a_intersect_b : ",a_intersect_b)

mod_a_intersect_b=[abs(x) for x in a_intersect_b]
print("|a_intersect_b| : ",mod_a_intersect_b)

mod_a=[abs(x) for x in a]
print("|a| : ",mod_a)

numerator=np.array(mod_a_intersect_b, dtype=np.float)
denominator=np.array(mod_a, dtype=np.float)

print(" mod_a_intersect_b /  mod_a : ", numerator/denominator)

这里我得到2个输出值。但是在 material 中,一般来说精度是一个单一的值。如果列表大小增加,则输出值也会增加。最后我发现我误解了这里的模数的意思。指导我按照上面的公式得到单精度值。提前致谢。

注:公式中a、b为一组值。所以我在我的代码中使用了列表。如果我使用其他选项在 python 中提及一组值,也请指导我,然后我可以获得单精度值。

正如@Hoog在gis评论中提到的,precision情况下的模运算意味着某个集合的cardinality(只是集合的一些元素), 所以你可以定义一个精度如下:

def precision(a, b):
    """
    a: set, relevant items
    b: set, retrieved items
    returns: float, precision value
    """
    return len(a & b) / len(a)

len(a) returns 集合元素的数量,即基数,|a| 操作。

如果ab是列表,先把它们包起来:

def precision(a, b):
    """
    a: set, relevant items
    b: set, retrieved items
    returns: float, precision value
    """
    a, b = set(a), set(b)
    return len(a & b) / len(a)

此外,在数据科学及相关领域,精度是计算比率 'true positives' / ('true positives' + 'false positives') 的指标。这与其他术语中描述的相同 - 但精度的标准实现对您没有帮助。