Python Counter对象的求和计算

Python Counter对象的求和计算,我们需要根据轮换和类型计算缺陷的概率。为了计算预期的概率,需要首先进行简单的求和。下面对所有缺陷的值进行求和,可以通过执行以下命令计算得到:

total = sum(defects.values())

这是直接从赋给defects变量的Counter对象中计算得到的,会显示样本集中共有309个缺陷。

还需要通过轮换和类型来获取缺陷,这意味着需要从原始缺陷数据中提取两种子集。按轮换提取将只使用Counter对象中(shift,defect type)键的前半部分,按类型提取则使用键值对的后半部分。

可以从赋值给defects变量的初始Counter对象集合中提取并创建额外的Counter对象来进行汇总。按轮换汇总如下所示:

shift_totals = sum(
    (Counter({s: defects[s, d]}) for s, d in defects),
    Counter()  # start value = empty Counter
)

这样就创建了单独的Counter对象集合。这些对象都具有一个轮换s作为键,以及相应的缺陷计数defects[s,d]。生成器表达式会创建12个这样的Counter对象用于从4种缺陷和3种轮换的所有组合中提取数据。可以使用sum()函数来组合Counter对象,以此获得按轮换组织的3组汇总信息。

对于sum()函数,不能使用默认的初始值0,必须提供一个空的Counter()对象作为初始值。

创建类型汇总的表达式类似于创建轮换汇总的表达式。

type_totals = sum(
    (Counter({d: defects[s, d]}) for s, d in defects),
    Counter()  # start value = empty Counter
)

使用缺陷类型d而不是轮换类型作为键,创建了十余个Counter对象,否则结果会一样。

轮换总计如下:

Counter({'3': 119, '2': 96, '1': 94})

缺陷类型总计如下:

Counter({'C': 128, 'A': 74, 'B': 69, 'D': 38})

将汇总结果保存为Counter对象,而不是创建简单的dict对象,甚至list实例。之后通常会将它们作为普通字典来使用,然而在某些情况下,需要合适的Counter对象而非精简的字典对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程