Python数据在二元组中的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据在二元组中的位置相关的知识,希望对你有一定的参考价值。

已有一个二元列表,如a=[(1,2),(3,4),(5,6),(7,8),..,(x,y)]。如果想知道列表里x和y的最大值,分别可以这样写:

max([k for k,v in a])
max([v for k,v in a])
但是如何知道最大值的位置在这个数组中的位置呢?

参考技术A a=[(1,2),(3,4),(5,6),(7,8)]
point= (max([k for k,v in a]),max([v for k,v in a]))
for i in range(len(a)):
    if a[i] == point:
        print i

参考技术B >>> a = [(1,2),(3,4),(5,6),(7,8)]
>>> a_x = [x for x,y in a]

>>> max_x = max(a_x)
>>> max_x_pos = a_x.index(max_x)
>>> max_x
7
>>> max_x_pos
3
>>>本回答被提问者采纳
参考技术C def find_max(data):
pos_x = None
pos_y = None
max_x = None
max_y = None
i = 0
for x,y in data:
if max_x == None or x > max_x:
max_x = x
pos_x = i
if max_y == None or y > max_y:
max_y = y
pos_y = i
i += 1
return max_x, pos_x, max_y, pos_y
参考技术D max_x = max([k for k,v in a])
index_max_x = [i[0] for i in a].index(max_x)

从 Python 中的数据学习二元决策图 (BDD)

【中文标题】从 Python 中的数据学习二元决策图 (BDD)【英文标题】:Learning Binary Decision Diagrams (BDDs) from data in Python 【发布时间】:2021-05-15 12:56:16 【问题描述】:

是否可以从数据中学习二元决策图 (BDD)(如机器学习方式)?如果有,怎么做?

背景:我已经在 Python 中看到了一些工具来完成这项任务,例如带有 scikit-learn 的决策树 (DTs),但我还没有看到任何用于 BDD 的工具。

作为一个例子,我想做的是:

前三列对应“输入”数据集(xi),标签为(y)。 N 对应于计数,例如,您可以使用后者来计算准确性。请注意,这不是cut sets 矩阵。在中间,您会看到一个对应的 BDD(这是我要获取的图表),右侧是一个对应的 DT。

【问题讨论】:

【参考方案1】:

如果目标是将输入输出估值表转换为代表由这些估值定义的布尔函数的 BDD,那么是的,这是可能的(这不是任何形式的学习)。比如使用Python包dd

from dd import autoref


bdd = autoref.BDD()
bdd.declare('x1', 'x2', 'x3')
# These are the assignments to the input variables
# where the Boolean function is TRUE (the y).
# The assignments where the Boolean function is FALSE
# are not used in the disjunction below.
data = [
    dict(x1=True, x2=False, x3=True),
    dict(x1=True, x2=True, x3=False),
    dict(x1=True, x2=True, x3=True)]
u = bdd.false
for d in data:
    u |= bdd.cube(d)  # disjunction so far
bdd.dump('example.png', roots=[u])

我们得到下图,其中包含complemented edges:

dd可以从PyPI安装:

pip install dd

【讨论】:

非常感谢您的回答。我有两个问题要问你:(1)是否可以明确地有两个端节点(即真/假)? (2) 如何使用模型来评估实例? (例如,类似 bdd.evaluate([x1=True, x2=False, x3= False]),对于这种情况,答案应该是 False 或 0)。 该实现使用补充边(所以一个端节点)。可以使用 github.com/tulip-control/dd/issues/41#issuecomment-589958394 处的代码绘制没有互补边的 BDD(因此有两个端节点)。为了评估BDD,假设BDD支持的所有变量都被赋值,可以使用BDD.let方法。例如,bdd.let(dict(x1=True, x2=False, x3=False), u) == bdd.true。可以在以下位置找到文档:github.com/tulip-control/dd/blob/master/doc.md。

以上是关于Python数据在二元组中的位置的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 中的数据学习二元决策图 (BDD)

根据元素在组中的位置设置元素样式

在python中查找多个组中的最大值

视图组中的图像按钮

python数据结构-如何为元组中的每个元素命名

我的元组中的那些小“u”是啥? (python 2.7)[重复]