我觉得这个问题有一个简单的答案,但我无法编写许多行代码而无法得到答案。我希望有人可以给我一些能让我的生活变得更轻松的事情。
我拥有的是:
highest_peak = sorted([(self.Y[x]-self.background_model[x]) for x in peaks_index_list])[0]
如何从peak_index_list中获取highest_peak的索引(x)?
index_of_highest_peak = sorted(???)[0]
index_of_second_highest_peak = sorted(???)[1]
感谢您的帮助。
答案 0 :(得分:3)
如果你使用numpy,你可以
import numpy as np
highest_peak = np.asarray(highest_peak)
max_index = highest_peak.argmax()
答案 1 :(得分:3)
我认为峰值索引self.Y[i] - self.background_model[i]
的峰值高度为i
?如果你想要的只是最高峰的索引:
max(peaks_index_list, key=lambda i: self.Y[i] - self.background_model[i])
同样,如果您真的想要排序列表,请使用上面的键to sort peaks_index_list
。
答案 2 :(得分:2)
您应该对表单(值,索引)的元组列表进行排序 -
info = sorted((self.Y[x]-self.background_model[x],x) for x in peaks_index_list)
现在您的最高峰指数是:
info[-1][1]
或者你可以更好地解开它:
highest_peak_value,highest_peak_index = info[-1]
(最高峰在排序列表中排在最后,因为我们没有指定reverse=True
)
第二高峰指数是:
info[-2][1]
等等。
答案 3 :(得分:2)
(注意:根据评论进行编辑)
将索引添加到要排序的对象:
highest_peak, index = sorted([(self.Y[x]-self.background_model[x], x)
for x in peaks_index_list])[0]
(最初我建议使用enumerate(),当你想要枚举的元素的索引时这很好。在这种情况下,peaks_index_list已经是海报所追求的索引。)
highest_peak, index = sorted([(self.Y[x]-self.background_model[x], i)
for i, x in enumerate(peaks_index_list]))[0]