gpt4 book ai didi

python - 如何从一个列表中获取一个值并将其应用于另一列表中的所有值

转载 作者:行者123 更新时间:2023-12-01 07:55:49 25 4
gpt4 key购买 nike

由于某些原因,我无法找出代码不起作用的原因。我想计算列表中每个值与所有其他值之间的距离。假设我从列表中取出第一个索引 rar[1] = (2927, 6312)我想知道它与自身的距离(为 0)以及列表中的所有其他值。

这就是为什么我想创建一个循环,其中第一个点不会改变,直到第二个点的第二个循环完成操作。最后我想得到一个列表,其中的子列表包含每个值到另一个值的距离。像这样:

距离 = [ [0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3 ,4]]

其中 0 是点本身到点本身之间的距离。1 是第一个点与列表中第一个值之间的距离2 是列表中第一个点和第二个值之间的距离...

提前非常感谢您。

rar= [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]

templist=[]
distance=[]
for i in range(len(rar)) :
firstpoint = rar[i]
for q in range(len(rar):
secpoint = rar[q]
zipz = np.array(list(zip(firstpoint,secpoint)))
nan = round(np.linalg.norm(zipz))
templist.append(nan)
distance.append(templist)

最佳答案

目前还不清楚如何计算两个元素之间的距离,但我认为差异的范数应该可以做到这一点。这是一个关于如何执行此操作的小示例,同时使用列表表达式保持代码简单和最少:

import numpy as np

rar = [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]
distance = [[round(np.linalg.norm(np.array(a)-np.array(b))) for b in rar] for a in rar]
print(distance)

输出:

[[0.0, 285.0, 53.0, 815.0, 142.0],
[285.0, 0.0, 233.0, 1100.0, 145.0],
[53.0, 233.0, 0.0, 867.0, 89.0],
[815.0, 1100.0, 867.0, 0.0, 956.0],
[142.0, 145.0, 89.0, 956.0, 0.0]]

关于python - 如何从一个列表中获取一个值并将其应用于另一列表中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987854/

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