リスト 'arr'のインデックス 'x'に対して、そのインデックスでピークを返す1次元Pythonリストのピーク検出プログラムif(arr [x] > arr [x + 1]およびarr [x]> arr [x-1])。 特殊ケース ケース1:最初の要素の場合。 2番目の要素と比較するだけです。 arr [x]> arr [x + 1]の場合、ピークが検出されます。 ケース2:最後の要素。前の要素と比較します。 arr [x]> arr [x-1]の場合、ピークが検出されます。 以下はそのコードです。 何らかの理由で、ピークがインデックス= 0にある場合には機能しません。中間のピークと最後のピークで完全に機能します。 何か助けていただければ幸いです。Pythonの単純な1次元ピーク検出プログラム
import sys
def find_peak(lst):
for x in lst:
if x == 0 and lst[x] > lst[x+1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
elif x == len(lst)-1 and lst[x] > lst[x-1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
elif x > 0 and x < len(lst)-1:
if lst[x] > lst[x+1] and lst[x] > lst[x-1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
else :
print "No peak found"
def main():
lst = []
for x in sys.argv[1:]:
lst.append(int(x))
find_peak(lst)
if __name__ == '__main__':
main()
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 1 2 3 4
Peak found at index 3
Peak : 4
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 1 2 3 4 3
Peak found at index 3
Peak : 4
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 4 3 2 1
No peak found
おかげでジェームズを明確化するために。 –
問題ありません - もしあなたが助けてくれれば、答えの左側にあるチェックマークをクリックして答えを受け入れることができれば素晴らしいでしょう! – James
申し訳ありませんが、SOが受け入れる前に8分待つように求めています –