2013-02-16 71 views
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]]

感謝任何幫助,我真的會欣賞它。

編輯:我競爭性地刪除所有的元組,所以我可以在以後添加它們,我認爲現在問題更多的是這個問題的核心。

+0

我沒有嘗試,但也許'inflection_indices = [(X)在列表X(NP 。(dY2dX2 <0.0)[0])]'。注意括號和逗號 – mlt 2013-02-16 21:12:02

+0

不完全是,該添加只是將每個整數放入其自己的元組,如下所示:[(1,),(2,),(3,),(4,),(5,)] – chase 2013-02-16 21:17:04

+1

如果你給了一個樣本來處理,肯定會有所幫助。我認爲你需要幾個步驟。也許你可以使用np.diff(np.where(dY2dX2 <0.0))找到中斷,並將它指向的地方!= 1變成一些* a *。然後,您將使用[:len(a)-1] -1和a [2:]創建開始/結束索引並使用這些切片創建切片。沿着那條線的東西。 – mlt 2013-02-16 21:37:13

回答

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)