计算两个笛卡尔坐标的距离

时间:2019-12-18 16:39:09

标签: python numpy

我还是python的新手,并且已经将python用作习惯的自动化工具。

现在我想尝试在python中进行数学计算。

我试图计算从手部练习数据中提取的两个笛卡尔坐标的距离:

在temp2中:

  

-0.329637489 3.481200000 1.740200000

     

2.389059814 1.000230000 8.653210000

N.B数字在文本文件的第1行和第2行中。

我最初的想法是将每个数字附加为变量。然后,计算它们。但是,我正在努力分配每个数字作为变量。

有没有更有效的方法来计算协调距离?

如果有,我想两种方式都知道。

非常感谢您!

2 个答案:

答案 0 :(得分:1)

您可以使用array将数据直接加载到numpy np.loadtxt中:

a= np.loadtxt('../filename.txt')
a
array([[-0.32963749,  3.4812    ,  1.7402    ],
       [ 2.38905981,  1.00023   ,  8.65321   ]])

然后执行操作以计算距离:

d = np.sqrt(np.sum((a[0]-a[1])**2))

让我们逐步进行以下操作:

  • a[0][-0.32963749, 3.4812, 1.7402],即第一行
  • a[1][ 2.38905981, 1.00023, 8.65321],第二行
  • a[0] - a[1]是元素方面的区别:[-2.7186973, 2.48097, -6.91301]
  • (a[0]-a[1])**2是元素差异平方[7.39131503, 6.15521214, 47.78970726]
  • 最后,np.sqrt(np.sum())将所有分量加在一起,然后取平方根,因此d7.831745298867902

也就是说,一旦加载数组,numpy已经具有一个内置函数来计算此距离:

d = np.linalg.norm(a[0]-a[1])

答案 1 :(得分:0)

也许您可以尝试以下方法:

import math

def calcDist(x1,y1,x2,y2):
     dist = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
     return dist       

distance = calcDist(x1, y1, x2, y2)
print(distance)

函数采用4个坐标,并使用math.sqrt返回它们之间的距离。如果您对如何读取变量还有其他疑问,请告诉我。我建议阅读这些行,并使用line.split()获取每个变量。