擅长:python、mysql、java
<p>您可以尝试:</p>
<pre class="lang-py prettyprint-override"><code>query_point = [1, 2, 3, 4]
n = 2
n_closest_points = df.loc[(df - query_point).pow(2).sum(axis=1).nsmallest(n).index]
</code></pre>
<p>给予</p>
<pre class="lang-py prettyprint-override"><code> 0 1 2 3
0 1 3 5 6
4 2 4 6 7
</code></pre>
<p>我们通过链式减法(广播)、平方(<code>pow</code>)和求和(<code>sum</code>)得到每行和<code>query_point</code>之间的平方距离之和。然后,通过获取距离最小的行(<code>nsmallest</code>),我们需要<code>n</code>最近的行。然后给出一个序列,其值为平方距离,索引指示所需行,因此我们获取其索引并将其放入原始df(<code>.loc</code>)</p>