所有尺寸的KDTree返回距离

时间:2019-01-28 12:13:49

标签: python multidimensional-array vector scipy distance

在Python中使用scipy.spatial.KDTree()返回两个数组:1.到向量列表中到最近点的距离; 2.列表中最近的向量的索引。

但是返回的距离是欧几里得距离。有没有办法返回给出欧几里得距离的各个分量?

例如:

import numpy as np
from scipy import spatial

a = np.round(np.random.uniform(0,10,(4,2)))

a
Out[171]: 
array([[2., 8.],
       [8., 1.],
       [6., 9.],
       [3., 6.]])

f_test = np.array([8.,1.1])

tree = spatial.KDTree(a)
distances, indices = tree.query(f_test)

distances
Out[169]: 0.10000000000000009

indices
Out[170]: 1

这里我想要的distances的输出为[0.,0.1],即f_testa中最近的矢量的距离,但以元素的方式。

注意: 这是一个简单的示例,其中我仅将一个向量与向量的2D数组进行了比较,但实际上我想返回新f_test(这是测试向量的2D数组)的最小全向量距离。到原始数组a。否则,这将是一个简单的问题,即从f_test中减去a之后找到最小的分量。

例如如果:

f_test = np.array([[8.,1.1],[6.,9.2]])

然后我想以distances的身份返回np.array([[0.,0.1],[0.,0.2]])

KDTree允许快速计算矢量数组的最小距离而没有循环,因此为什么在这里以它为例进行说明。

链接到KDTree文档:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.KDTree.html

0 个答案:

没有答案