<p>我们可以使用numpy的<a href="https://numpy.org/doc/stable/reference/generated/numpy.argsort.html" rel="nofollow noreferrer">argsort</a>方法,该方法根据升序中的值对索引进行排序,并使用<a href="https://numpy.org/doc/1.18/reference/generated/numpy.where.html" rel="nofollow noreferrer">where</a>方法将所有100转换为NaN</p>
<pre><code>a = np.array([ 10, 10, 11, 11, 10, 10, 12, 12, 10, 10, 10, 13, 14,
14, 15, 100, 15, 12, 13, 11, 10, 12, 14, 14, 100, 100,
100, 12, 13, 10, 10, 11, 13, 100, 100, 13, 14, 13, 12,
10, 10, 11, 10, 100, 100, 100, 12, 13, 12, 13, 10, 10,
10, 15, 100, 14, 14, 11, 12, 12, 10, 10, 10, 15, 15,
14, 10, 10, 10, 11, 10, 10, 10, 12, 11, 11, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10])
n=3
nan_100 = np.where(a==100,np.NaN,a)
nan_count = sum(np.isnan(nan_100))
print(nan_100.argsort()[-1*n-nan_count:-1*nan_count][::-1])
</code></pre>
<p>在这里,nan_100变量将具有数组,其中100被转换为nan。我已经计算了nan的值,因为argsort会将所有nan索引移到末尾</p>
<p>输出:</p>
<pre><code>array([64, 53, 16])
</code></pre>