数据集中2个点之间的最大距离,并标识这些点

问题描述 投票:5回答:4

我有一个由几个点的x,y,z坐标组成的矩阵。我想找到极值点,即相距最远的两个点。

我可以在matlab中找到一种方法,但是我需要在Python中使用它

这是matlab中的代码

A = randint(500,3,[-5 5]);
D=pdist(A);
D=squareform(D);
[N,I]=max(D(:));
[I_row, I_col] = ind2sub(size(D),I);

pdist给出点对(i,j)之间的距离。正方形给出矩阵输出在最后两个步骤中,我尝试找到矩阵I_row,I_col的索引。

点I_row和I_col具有最大距离。。>>

有人像我所有其他代码都在Python中一样,有人建议我在python中有效率吗?

我有一个由几个点的x,y,z坐标组成的矩阵。我想找到极值点,即距离最远的两个点。我可以在matlab中找到一种方法,但是我需要...

python algorithm matlab numpy
4个回答
3
投票

如果有scipy,则与大多数matlab核心功能完全相同:

from numpy import random, nanmax, argmax, unravel_index
from scipy.spatial.distance import pdist, squareform

A = random.randint(-5,5, (500,3))
D = pdist(A)
D = squareform(D);
N, [I_row, I_col] = nanmax(D), unravel_index( argmax(D), D.shape )

2
投票

这将为您提供A中距离temp_b最远的点的索引。请注意,它将在列表中包括两个方向,例如(8,222)和(222,8)。如果需要,我会留给您删除。


1
投票

这里所有其他答案都花费O(N ^ 2)


-1
投票

您可以使用scipy的pdist

© www.soinside.com 2019 - 2024. All rights reserved.