我有一个由几个点的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中找到一种方法,但是我需要...
如果有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 )
这将为您提供A中距离temp_b最远的点的索引。请注意,它将在列表中包括两个方向,例如(8,222)和(222,8)。如果需要,我会留给您删除。
这里所有其他答案都花费O(N ^ 2)
您可以使用scipy的pdist