私はデータセットを持っており、データにピークがある場所を解決しようとしています。その前後のポイントよりも高い値を持つデータポイント。Pythonリストのインデックスが範囲外です - ローカル最大値を見つける
私は1つのデータセットに対して機能するコードを持っていますが、別のデータセットにそれを転送すると、特定の行に対して範囲外のエラーが発生します。
私が持っているコードは次のとおりです。
for line in file.readlines():
peaks.append(0)
line = line.split(',')
time.append(float(line[0]))
TP.append(float(line[3]))
level.append(float(line[5]))
for i in range(len(level)-1):
i = i + 1
if (level[i] > level[i-1]) and (level[i] > level[i+1]):
peaks[i] = 1
noPeaks = noPeaks +1
print noPeaks
しかし、1つのライン(今のところ)それはデータが範囲外であると言うために - データを視覚的に検査することは、これを示唆していない - 値が前回よりも高く、グラフの立ち上がりでは次の値よりも低くなります。
助けがあれば助かります。
は私達にあなたのすべてのコードを示しています。あなたは 'i'をどう定義しますか? –
リストの最後を過ぎてインデックスにアクセスしようとしているようです。 'i'が最後のリスト項目のインデックスに達した場合、' level [i + 1] 'は存在しないリスト項目にアクセスしようとします。ループ全体を見せてください! –
'level [i-1]'と 'level [i + 1]'があるとき、 'i'が' 0'か 'len(level)-1'(つまりmax index)のときはどうなりますか? –