擅长:python、mysql、java
<p>您可以使用欧几里德距离或L2Norm来计算数据帧的每一行与查询点之间的距离</p>
<pre><code>df = pd.DataFrame([[1, 3, 5, 6],
[2, 7, 9, 1],
[2, 8, 1, 8],
[5, 4, 9, 0],
[2, 4, 6, 7]])
vec = [1, 2, 3, 4]
dist = df.sub(vec, axis=1).pow(2).sum(axis=1).pow(.5)
</code></pre>
<p>这就给出了输出</p>
<pre><code>0 3.000000
1 8.426150
2 7.549834
3 8.485281
4 4.795832
dtype: float64
</code></pre>
<p>您可以选择最短的n个距离,这将为您提供距查询点最近的n个数据点的位置</p>
<p>或者您可以使用<code>np.linlag.norm</code></p>
<pre><code>dist = np.linalg.norm(source.to_numpy() - vec, axis=1)
</code></pre>
<p>这将为您提供输出</p>
<pre><code>array([3. , 8.42614977, 7.54983444, 8.48528137, 4.79583152])
</code></pre>
<p>请查看此<a href="https://stackoverflow.com/questions/64374482/how-to-calculate-distance-for-every-row-in-a-pandas-dataframe-from-a-single-poin">question</a>的答案</p>