【问题标题】:Python: Calculating the distance between points in an arrayPython:计算数组中点之间的距离
【发布时间】:2022-01-17 13:19:03
【问题描述】:

我想计算数组中数据点之间的距离。

例子

A1 = array([[ 54.        ,  15.        ,   1.        ],
       [ 55.        ,  13.66311896,   1.        ],
       [ 56.        ,  10.16311896,   1.95491503],
       [ 57.        ,   5.83688104,   4.45491503],     # shape 6rows x 3 col
       [ 58.        ,   2.33688104,   7.54508497],
       [ 59.        ,   1.        ,  10.04508497],
       [ 60.        ,   1.        ,  11.        ],

现在,我想计算第 1 列和第 2 列中的点之间的距离。所有距离都应该从第 0 行计算,即,(x1,y1 = 15,1) 但 x2,y2 是可变的第 1 行到第 6 行的元素。我想将此距离保存为“列表”。请帮我在python中解决这个问题

【问题讨论】:

  • 请在此处发布您的minimal reproducible example。如果您告诉我们到目前为止您已经尝试过什么以及遇到了哪些错误或问题,我们会更容易为您提供帮助。
  • dist_matrix = ((A1.reshape(N_points_in_A1, 1, dim_of_point) - A2.reshape(1, N_points_in_A2, dim_of_points))**2).sum(2)**0.5。 dist_matrix[i, j] 将包含 A1 中的点 i 与 A2 中的点 j 的距离
  • 感谢您的评论@yann。您能否解释一下((A1.reshape(N_points_in_A1, 1, dim_of_point) - A2.reshape(1, N_points_in_A2, dim_of_points))**2).sum(2)**0.5. dist_matrix[i, j] 中的 dim_of_pointssum(2) 是什么

标签: python arrays numpy distance


【解决方案1】:

毕达哥拉斯定理指出sqrt(a^2+b^2)=c 其中c 是到达点ab 的正交线的尖端之间的距离。

import math
from math import sqrt
dist_list=[]
for i in A1[1:]:
    dist=sqrt(pow(A1[0][1]-i[1],2)+pow(A1[0][2]-i[2],2))
    dist_list.append(dist)

如果你不想导入math

for i in A1[1:]:
    dist=pow(pow(A1[0][1]-i[1],2)+pow(A1[0][2]-i[2],2),0.5)
    dist_list2.append(dist)

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 2014-11-29
    • 1970-01-01
    • 2017-04-21
    • 2014-02-28
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多