2014-04-03 39 views
0

我有几百值,看起来像这样的列表:在2D Python列表访问行计算值之间的距离

(0.0021265099091875685, 0.0017700721644805513) (0.0026319917728469086, 0.002632415013842871)

我想计算每行之间的欧氏距离。

我计划在计算它的方式是这样的:

sqrt(0.0021265099091875685 - 0.0026319917728469086)^2 + (0.0017700721644805513 - 0.002632415013842871)^2 

我无法工作了我怎么能为了做这些计算访问每个值。如果有人对此有任何想法,这将是非常有益的。谢谢

编辑:我拉从MySQL数据库的数据。起初我有两个列表,在打印时,列表如下所示:

0.00212650990919 0.00263199177285 0.00332920813651 0.00268428300012 0.00245768768193

然后我做这个创造了一个新的列表:

someList = zip(list1 , list2) 

这给了我输出我有以上。

+0

通过每一行之间,你的意思是,对于一个列表在计算三行时,你想计算d(1,2),d(2,3)是否正确?不是'd(1,2),d(2,3),d(1,3)'? –

+0

是的,你是对的,我想用前者,而不是后者。 – user3157916

+0

所以,我还不清楚。我们是在讨论两个列表:'x_values = [1.0,2.3,4.5,...]'和'y_values = [3.4,1.1,0.3,...]'成为'someList = [(1.0,3.4 ),(2.3,1.1),(4.5,0.3),...]'当'zip's? –

回答

0

您可以使用压缩:

l1=(0.0021265099091875685, 0.0017700721644805513) 
l2=(0.0026319917728469086, 0.002632415013842871) 
result=[(x-y)**(1/2) for x,y in zip(l1,l2)] 
0

我不知道你的数据是如何将是从你的问题。我假设你的数据作为:

data = [ 
[(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871)], 
[(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871)], 
[(point-one), (point-two)], 
... 
] 

这将然后给你所需要的:

[pow(sqrt(item[1][0] - item[0][0]), 2) + pow((item[1][1] - item[0][1]), 2) for item in data] 
0

假设你的名单看起来是这样的:

lst = [ ((x1,y1),(x2,y2)), ... ] 

那么你可以只做:

import math 
distances = [ math.sqrt((p1[0]-p2[0])**2.0 + (p1[1]-p2[1])**2.0) for p1, p2 in lst ] 
0

假设你的列表看起来像s omething像这样...

xyz = [(0.0021265099091875685, 0.0017700721644805513), (0.0026319917728469086, 0.002632415013842871), ...] 

你也可以做......

For item in xyz: 
    first_num = item[0] 
    second_num = item[1] 
0

假设你的数据看起来是这样的:

points = [ 
    (a, b), 
    (c, d), 
    (e, f), 
    ... 
] 

这时,你可能做这样的事情:

d = lambda x, y: ((y[0] - x[0]) ** 2 + (y[1] - x[1]) ** 2) ** 0.5 
distances = [d(*pair) for pair in zip(points, points[1:])] 
+0

我的数据没有以这种方式实际定义。我有两个列表,每个列表都有几百个浮点值。我将这两个列表合并到一个列表中,如下所示: someList = zip(list1,list2) – user3157916

+0

@ user3157916:因此,一旦合并列表,使用zip,它们将看起来像我拥有的​​列表? –

+0

啊!傻我。那里有一个大脑放屁的位。感谢您的帮助,这是我需要的! – user3157916