擅长:python、mysql、java
<p>不必对所有最小值进行排序,只需获得最低的一对:</p>
<pre class="lang-py prettyprint-override"><code>def get_minima(array):
sdiff = np.diff(np.sign(np.diff(array)))
rising_1 = (sdiff == 2)
rising_2 = (sdiff[:-1] == 1) & (sdiff[1:] == 1)
rising_all = rising_1
rising_all[1:] = rising_all[1:] | rising_2
min_ind = np.where(rising_all)[0] + 1
minima = list(zip(min_ind, array[min_ind]))
return min(minima, key=lambda pair: pair[1])
</code></pre>
<p>例如:</p>
<pre class="lang-py prettyprint-override"><code>minima = [(59, 7.958373616052042e-10),
(69, 6.5364637051479655e-09),
(105, 1.0748381102806489e-08),
(88, 2.953895857338913e-07),
(27, 9.083111768048306e-07)]
minimum = min(minima, key=lambda pair: pair[1])
print(minimum)
>>> (59, 7.958373616052042e-10)
</code></pre>