0

我想知道是否有人可以帮助我找出一种从某些 xy 数据集中获取与峰值相关的 x 索引的好方法。我知道 d2y/dx2<0 和 dy/dx=0 表示 x 处的峰值中心。拐点在 d2y/dx2=0 和 |dy/dx|>0。但我想将数据从拐点到拐点作为一个列表。(所以列表列表,因为我需要得到几个峰)

所以,我也能够为拐点到拐点的值列表提出这个:

inflection_indices = [x for x in list( np.where( dY2dX2 < 0.0 )[0] )]

但是,这只是给了我一个所有峰的列表。

我想要一个列表列表,其中整个列表的每个元素都是一个单独的峰值。

像这样:[14,15,16,17,18,19,20,89,90,91,92,93,94,204,205,206,207]

当我想要这个时:[[14,15,16,17,18,19,20],[89,90,91,92,93,94],[204,205,206,207]]

感谢您对此的任何帮助,我将不胜感激。

编辑:我完全删除了所有元组等,所以我可以稍后添加它们,我认为这个问题现在更成为问题的核心。

4

1 回答 1

0

我想我找到了答案,但它根本不是很优雅......

self.list_of_peak_indeces = [x for x in list(np.where(self.dY2dX2 < 0.0)[0])]
temp_list = []
self.main_lists_of_peak_indices = []
difference_between_indices = np.hstack([np.diff(self.list_of_peak_indeces), np.diff(self.list_of_peak_indeces)[-1]+1])
    for index, item in enumerate(self.list_of_peak_indeces):
        if(np.absolute(difference_between_indices[index])!=1):
            if(temp_list!=[]):
                temp_list.append(item)
                self.main_lists_of_peak_indices.append(temp_list)
            temp_list = []
        else:
            temp_list.append(item)
于 2013-02-16T23:17:23.123 回答