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 sorted(minima, key=lambda x: x[1])
通过使用我拥有的数据数组运行此代码,它将生成:
[(59, 7.958373616052042e-10),
(69, 6.5364637051479655e-09),
(105, 1.0748381102806489e-08),
(88, 2.953895857338913e-07),
(27, 9.083111768048306e-07)]
这是伟大的-它在我的数据集中的所有最小值。但我只需要存储最小值——在这个特定示例中是(59,7.958373616052042e-10)点。我想不出怎么做。我尝试了一些使用np.amin和布尔比较的方法,但我对符号和语法感到非常困惑,因为现在它是一个列表数组,我以前从未真正使用过它。
谢谢你的帮助
看起来太简单了,但你试过了吗
不必对所有最小值进行排序,只需获得最低的一对:
例如:
相关问题 更多 >
编程相关推荐