使用 Numpy 获取训练集中与输入矩阵最短距离的数据点索引
Get Index of data point in training set with shortest distance to input matrix with Numpy
我想构建一个函数 npbatch(U,X),它将输入矩阵 (U) 中的数据点与训练矩阵 (X) 中的数据点进行比较,并得到 X 的索引和最短的欧几里德到 U 中数据点的距离。
我想避免任何循环以提高性能,我想使用函数 scipy.spatial.distance.cdist 来计算距离。
示例输入:
U
array([[0.69646919, 0.28613933, 0.22685145],
[0.55131477, 0.71946897, 0.42310646],
[0.9807642 , 0.68482974, 0.4809319 ]])
X
array([[0.24875591, 0.16306678, 0.78364326],
[0.80852339, 0.62562843, 0.60411363],
[0.8857019 , 0.75911747, 0.18110506]])
--> 预期输出:X 中数据点的三个索引与 U 中三个数据点的距离最短的数组。
我的总体目标是使用我得到的索引获取相应数据点的标签。标签输入示例为:
Y
array([1, 0, 0])
感谢您的任何提示!
使用 scipy.spatial.distance.cdist
您已经为该任务选择了一个非常适合的函数。要获得索引,我们只需要沿轴 0(或轴 1 为 cdist(U, X)
)应用 numpy.argmin
:
ix = numpy.argmin(scipy.spatial.distance.cdist(X, U), 0)
获取 标签 就很简单了:
Y[ix]
我想构建一个函数 npbatch(U,X),它将输入矩阵 (U) 中的数据点与训练矩阵 (X) 中的数据点进行比较,并得到 X 的索引和最短的欧几里德到 U 中数据点的距离。 我想避免任何循环以提高性能,我想使用函数 scipy.spatial.distance.cdist 来计算距离。
示例输入:
U
array([[0.69646919, 0.28613933, 0.22685145],
[0.55131477, 0.71946897, 0.42310646],
[0.9807642 , 0.68482974, 0.4809319 ]])
X
array([[0.24875591, 0.16306678, 0.78364326],
[0.80852339, 0.62562843, 0.60411363],
[0.8857019 , 0.75911747, 0.18110506]])
--> 预期输出:X 中数据点的三个索引与 U 中三个数据点的距离最短的数组。
我的总体目标是使用我得到的索引获取相应数据点的标签。标签输入示例为:
Y
array([1, 0, 0])
感谢您的任何提示!
使用 scipy.spatial.distance.cdist
您已经为该任务选择了一个非常适合的函数。要获得索引,我们只需要沿轴 0(或轴 1 为 cdist(U, X)
)应用 numpy.argmin
:
ix = numpy.argmin(scipy.spatial.distance.cdist(X, U), 0)
获取 标签 就很简单了:
Y[ix]