如何在python中为一组值计算模量值?

时间:2019-02-28 12:39:09

标签: python-3.x modulus

在一种材料中,我找到了一个公式来计算精度,如下所示:

enter image description here

这里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个输出值。但是在材料上和一般而言,精度是一个值。如果列表大小增加,则输出值也会增加。最后我发现我误解了模数的含义。指导我根据上述公式获取单精度值。预先感谢。

注意:在公式a和b中是一组值。所以我在代码中使用了列表。如果我使用其他选项在python中提到一组值,也可以指导我,那么我可以获得单精度值。

1 个答案:

答案 0 :(得分:2)

如gis注释中的@Hoog所述,在 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)返回集合元素的基数,即基数|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')的指标。用其他术语描述的是同一件事-但是标准的标准实现无法帮助您。