gpt4 book ai didi

python - 从 python 中的比较矩阵获取数据

转载 作者:行者123 更新时间:2023-11-30 23:46:06 26 4
gpt4 key购买 nike

我有一个从给定列表返回比较矩阵的函数:

def compare(a, b):
if b > a:
return 1
elif b < a:
return -1
else:
return 0

def matrix(data):
return [[compare(a, b) for b in data] for a in data]

我这样使用这个函数:

>>> matrix([0, 4, 5, 2, 1, 3])
[[0, 1, 1, 1, 1, 1],
[-1, 0, 1, -1, -1, -1],
[-1, -1, 0, -1, -1, -1],
[-1, 1, 1, 0, -1, 1],
[-1, 1, 1, 1, 0, 1],
[-1, 1, 1, -1, -1, 0]]

我需要一个函数来从给定矩阵返回数据,如下面的代码,但我不知道该怎么做。

>>> data_from_matrix([[0, 1, 1, 1, 1, 1],
[-1, 0, 1, -1, -1, -1],
[-1, -1, 0, -1, -1, -1],
[-1, 1, 1, 0, -1, 1],
[-1, 1, 1, 1, 0, 1],
[-1, 1, 1, -1, -1, 0]])
[0, 4, 5, 2, 1, 3]

最佳答案

一个简单的技巧是计算矩阵每一行的总和:

def data_from_matrix(m):
return [(len(m) - 1 - sum(row)) // 2 for row in m]

这假设矩阵实际上定义了全序并且不检查矩阵的一致性。另一个假设是定义总排序的集合是 range(len(m))

示例:

>>> data_from_matrix([[ 0,  1,  1,  1,  1,  1],
... [-1, 0, 1, -1, -1, -1],
... [-1, -1, 0, -1, -1, -1],
... [-1, 1, 1, 0, -1, 1],
... [-1, 1, 1, 1, 0, 1],
... [-1, 1, 1, -1, -1, 0]])
[0, 4, 5, 2, 1, 3]

关于python - 从 python 中的比较矩阵获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196378/

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