标签: euclidean-distance

绘制一个图,其中顶点之间的距离对应于边权重

当我给他一个加权图并且顶点之间的边权重指向顶点之间的距离时,是否有一种算法可以给我图中顶点的坐标

就像是:

public _ArrayOfCoordinatesForVertices_ **super_hyper_algorithm**(weighted_graph){  
     return _foo_;  
}
Run Code Online (Sandbox Code Playgroud)

algorithm drawing graph euclidean-distance

4
推荐指数
2
解决办法
2880
查看次数

Python:减少元组的元组

我试图在Python中计算从A点到B点通过中间点列表的路径长度.我知道怎么做,但我确实想使用reduce Built-in功能.

为什么我到目前为止尝试过,请注意这是完全错误的,是这样的:

reduce(lambda x,y: math.sqrt((y[1]-y[0])**2+(x[1]-x[0])**2) , ((1,2),(3,4),(1,8)))
Run Code Online (Sandbox Code Playgroud)

任何的想法?

谢谢.

python reduce lambda euclidean-distance

4
推荐指数
1
解决办法
2772
查看次数

Java方法获得欧几里得距离

public class Point
{ 
// Placeholders for xcoordinate, ycoordinate, and quadrants
int xcoord = 0;
int ycoord =0;
double distance = 0.0;
String quadrant = ("NW");


//moveUp changes the y coordinate 
void moveUp (int x) {
    int moveUp = ycoord + x;
    ycoord= moveUp;
    System.out.println(moveUp);
    }
// moveDown changes the y coordinate    
void moveDown (int y){
    int moveDown = ycoord - y;
    ycoord =moveDown;
    System.out.println(moveDown);}
// moveLeft changes the x coordinate    
void moveLeft (int f){
    int moveLeft = xcoord -f …
Run Code Online (Sandbox Code Playgroud)

java methods euclidean-distance

4
推荐指数
2
解决办法
3万
查看次数

如何找到两个坐标矩阵之间最接近的对应向量?

我在Python中有以下问题需要解决:

给定两个坐标矩阵 (NumPy ndarrays) AB,查找中相应坐标向量a中的所有坐标向量,使得欧几里得距离最小。坐标矩阵和可以具有不同数量的坐标向量(即不同的行数)。AbB||a-b||AB

此方法应返回一个坐标向量矩阵,其中中的C第 i 个向量是与中的第 i 个坐标向量的欧几里德距离最小化的向量。cCBaA

例如,假设

A = np.array([[1,1], [3,4]])B = np.array([[1,2], [3,6], [8,1]])

向量[1,1]inA和向量 in之间的欧几里德距离B为:

1, 5.385165, 7
Run Code Online (Sandbox Code Playgroud)

所以第一个向量C[1,2]

[3,4]类似地,向量inA和向量 in的距离B为:

2.828427, 2, 5.830952  
Run Code Online (Sandbox Code Playgroud)

所以第二个也是最后一个向量C将是[3,6]

所以C = [[1,2], [3,6]]

如何在 Python 中高效地编写此代码?

python numpy vector euclidean-distance

4
推荐指数
1
解决办法
2583
查看次数

连续空间最短路径

我需要一个最短路径算法来控制现实生活中的机器人。

假设我有矩阵形式的环境地图,其中 1 是障碍物,0 是自由空间。如果我使用传统的最短路径算法,例如 A*,那么这将为我提供曼哈顿距离最短路径。所以离实际的最短路径还差得很远。出现这个问题是因为我想不出一种方法来惩罚运动,使对角线比两条直线更好。我可以做一个启发式,让 A* 首先尝试两点之间的欧几里德最短路径,但实际上并没有使欧几里德最短路径成为更好的路径。

有谁知道获得连续空间最短路径的方法吗?它不一定是实际的最佳路径,但比直线和 90 度角更好。

我有一个想法:从起点画一个圆。增加圆的半径,直到圆上的一个点靠近墙壁或球门。圆边缘上的所有点都被设置为子节点,并受到圆半径的惩罚。圆内所有不开放的点都将被关闭,因为没有理由测试它们。以欧几里德最短路径为启发式,以 A* 方式重复此过程,直到达到目标状态。使机器人从一个点直线移动到下一个点。

这应该会提供更接近我正在寻找的东西。一组具有不同角度的直线。当然,如果有连续的曲线就更好了……

algorithm continuous shortest-path euclidean-distance

4
推荐指数
1
解决办法
1841
查看次数

来自两个独立数据帧的距离矩阵

我想创建一个矩阵,其中包含从一个数据帧到另一个数据帧的行的欧几里德距离.例如,假设我有以下数据框:

a <- c(1,2,3,4,5)
b <- c(5,4,3,2,1)
c <- c(5,4,1,2,3)
df1 <- data.frame(a,b,c)

a2 <- c(2,7,1,2,3)
b2 <- c(7,6,5,4,3)
c2 <- c(1,2,3,4,5)
df2 <- data.frame(a2,b2,c2)
Run Code Online (Sandbox Code Playgroud)

我想创建一个矩阵,其中df1中每行的距离与df2的行相距.

因此矩阵[2,1]应该是df1 [2,]和df2 [1,]之间的欧氏距离.矩阵[3,2] df [3,]和df2 [2,]等之间的距离.

有谁知道如何实现这一目标?

r matrix euclidean-distance dataframe

4
推荐指数
1
解决办法
1334
查看次数

计算给定列表的欧几里德距离

def distance(alist, blist):
    sum_of = 0
    for x in alist:
        for y in blist:
            ans = (x - y)**2
            sum_of += ans
    return (sum_of)**(1/2)
print(distance([1, 1, 3], [2, 2, 3])) #1.4142135623730951
print(distance([1, 2, 3], [2, 2, 3])) #1.0
print(distance([2, 2, 3], [2, 2, 3])) #0.0
print(distance([1, 1], [2, 2])) #1.4142135623730951
Run Code Online (Sandbox Code Playgroud)

所以我有一组测试用例,它们给了我两个带有数字的列表。我的任务是计算给定列表的欧几里德距离。但是,我没有得到正确的结果。相反,我得到的是 3.7416573867739413、3.0、2.0 和 2.0。这就是我到目前为止所拥有的,我不确定我做错了什么。

python euclidean-distance

4
推荐指数
1
解决办法
2749
查看次数

如何计算numpy数组的行对之间的欧氏距离

我有一个numpy像这样的数组:

import numpy as np
a = np.array([[1,0,1,0],
             [1,1,0,0],
             [1,0,1,0],
             [0,0,1,1]])
Run Code Online (Sandbox Code Playgroud)

我想euclidian distance在每对行之间进行计算.

from scipy.spatial import distance
for i in range(0,a.shape[0]):
    d = [np.sqrt(np.sum((a[i]-a[j])**2)) for j in range(i+1,a.shape[0])]
    print(d)
Run Code Online (Sandbox Code Playgroud)

[1.4142135623730951,0.0,1.4142135623730951]

[1.4142135623730951,2.0]

[1.4142135623730951]

[]

有没有更好的pythonic方法来做到这一点,因为我必须在一个巨大的numpy阵列上运行此代码?

python numpy euclidean-distance

4
推荐指数
2
解决办法
6854
查看次数

欧几里得距离的矢量化实现

我正在尝试计算欧几里得距离的矢量化实现(使用内积在 X 和 Y 中的每个元素之间)。数据如下:

X = np.random.uniform(low=0, high=1, size=(10000, 5))
Y = np.random.uniform(low=0, high=1, size=(10000, 5))
Run Code Online (Sandbox Code Playgroud)

我所做的是:

euclidean_distances_vectorized = np.array(np.sqrt(np.sum(X**2, axis=1) - 2 * np.dot(X, Y.T) + np.sum(Y**2, axis=1)))
Run Code Online (Sandbox Code Playgroud)

尽管这给出了“一些输出”,但答案是错误的,因为每行仍然包含 5 个元素。

有谁知道我做错了什么?

python numpy vectorization euclidean-distance

4
推荐指数
1
解决办法
3289
查看次数

识别差异的最佳方法:欧氏距离,余弦距离或简单减法?

我是数据科学的新手,目前正在学习可以使用Python进行的各种技术。目前,我正在尝试使用Spotify的API播放自己的播放列表。

目的是找到两个不同播放列表之间最相似的功能。

我的问题是识别这两个播放列表之间最相似功能的最佳方法是什么?

我首先获得了每个播放列表中的所有曲目及其各自的功能。然后,我计算了每个特征的均值。

这是我最终得到的DataFrame。数据值是所有曲目特征到达其各自播放列表的均值

                   playlist1  playlist2
                   --------------------
danceability      | 0.667509   0.592140
energy            | 0.598873   0.468020
acousticness      | 0.114511   0.398372
valence           | 0.376920   0.287250
instrumentalness  | 0.005238   0.227783
speechiness       | 0.243587   0.088612
Run Code Online (Sandbox Code Playgroud)

我进行了一些挖掘,发现了两个常见过程:

1.欧氏距离

2.余弦相似度

由于某种原因,我无法使用我的头,而是继续计算每个功能之间的绝对差异。简单的减法,因为这对我来说很有意义。差异最大的特征就是“最不相似”。

通过这种方法,我最终使用了这些结果,并得出结论,能量声学是最不相似的

                   playlist1    playlist2   absoluteDifference
                   ----------------------------------------------------
energy             |0.871310    0.468020    0.403290
acousticness       |0.041479    0.398372    0.356893
valence            |0.501890    0.287250    0.214640
instrumentalness   |0.049012    0.227783    0.178771
danceability       |0.531071    0.592140    0.061069
speechiness        |0.109587    0.088612    0.020975
Run Code Online (Sandbox Code Playgroud)

我的直觉是否正确/不正确?何时使用上述技术?这些技术中的任何一种在这种情况下是否适用?

最终,我想将最重要的两个差异作为KNN的轴。我的直觉是,我可以识别两个播放列表的最相似的功能,可以使播放列表具有更清晰,定义更明确的功能,并且可以更准确地预测该播放列表应属于哪首歌曲。

similarity euclidean-distance pandas cosine-similarity data-science

4
推荐指数
1
解决办法
803
查看次数