M. *_*gan 5 python numpy matrix scipy data-structures
我曾经用来scipy.spatial.distance.pdist(X)计算下面列表X的每对元素之间的欧几里德距离度量:
X = [[0, 3, 4, 2], [23, 5, 32, 1], [3, 4, 2, 1], [33, 54, 5, 12]]
Run Code Online (Sandbox Code Playgroud)
这将返回一个压缩距离矩阵:
array([ 36.30426972, 3.87298335, 61.57109712, 36.06937759,
57.88782255, 59.41380311])
Run Code Online (Sandbox Code Playgroud)
对于每个元素X,我需要找到最接近的其他元素的索引.
将压缩距离矩阵转换为方形形式有助于可视化结果,但我无法弄清楚如何以编程方式识别X中每个元素的最接近元素X的索引.
array([[ 0. , 36.30426972, 3.87298335, 61.57109712],
[ 36.30426972, 0. , 36.06937759, 57.88782255],
[ 3.87298335, 36.06937759, 0. , 59.41380311],
[ 61.57109712, 57.88782255, 59.41380311, 0. ]])
Run Code Online (Sandbox Code Playgroud)
我相信argmin()是使用的功能,但我从这里迷失了.在此先感谢您的帮助.
我们将以结果的方形形式运作.首先,排除"纽约最接近纽约"的答案,
numpy.fill_diagonal(distances, numpy.inf)
Run Code Online (Sandbox Code Playgroud)
然后,它是一个简单argmin的轴:
closest_points = distances.argmin(axis=0)
Run Code Online (Sandbox Code Playgroud)