【问题标题】:How to find distances from an array如何找到数组的距离
【发布时间】:2020-02-13 19:20:05
【问题描述】:

我有一个日期数组(1000 列,2 个箭头)。

数据链接:https://mega.nz/#!MMlhWbbT!bwsu4_t98hLNX-A7IYnWipPydtWILkKxgMzXhu3ytHE

我想计算距离(不重复或计算两次)。我正在使用,

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

x1=dt1[0][0]
x2=dt1[1][0]
y1=dt1[0][1]
y2=dt1[1][1]
print(D(x1,x2,y1,y2))

但是有 1000 个点,我如何使用 for 或类似的东西来确定距离?

【问题讨论】:

    标签: python python-3.x numpy


    【解决方案1】:

    这将计算整个数组中两个连续点之间的距离:

    for x in range(0,len(dt1)):
        print(D(dt1[x][0],dt1[x+1][0],dt1[x][1],dt1[x+1][1]))
    

    如果您想计算数组中任意两点之间的距离而不重复,应该这样做(包括 OP 的新请求):

    distances = []
    for x in range(0,len(dt1)):
        for y in range(x+1,len(dt1)):
            dist = D(dt1[x][0],dt1[y][0],dt1[x][1],dt1[y][1])
            distances.append(dist)
    print(distances)
    

    【讨论】:

    • 如何存储数组结果?
    • 我编辑了答案,包括将结果存储在数组中
    【解决方案2】:

    您可以使用np.linalg.norm 计算欧几里得距离:

    In [1]: import numpy as np
    
    In [2]: dt1 = np.random.rand(2, 2)
    
    In [3]: dt1
    Out[3]:
    array([[0.79791459, 0.71415415],
           [0.52647092, 0.894041  ]])
    
    In [4]: np.linalg.norm(dt1[0] - dt1[1])
    Out[4]: 0.3256392880558975
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-22
      • 2017-06-15
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多