我还是python的新手,并且已经将python用作习惯的自动化工具。
现在我想尝试在python中进行数学计算。
我试图计算从手部练习数据中提取的两个笛卡尔坐标的距离:
在temp2中:
-0.329637489 3.481200000 1.740200000
2.389059814 1.000230000 8.653210000
N.B数字在文本文件的第1行和第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())
将所有分量加在一起,然后取平方根,因此d
是7.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()
获取每个变量。