a=[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 -1, -1, -1, -1,-1, 0, 0, 0, 0, 0]
繰り返し点のインデックスの中点を取得できるようにしたい、つまり
output_vector = [2, 8, 13, 19]
つまり、output_vector [0]は最初のシーケンスの中点のインデックスです 0, 0, 0, 0, 0
output_vector [1]は、2番目に繰り返されるシーケンスの中点です。 1, 1, 1, 1, 1, 1, 1
output_vector [2]は、2番目に繰り返されるシーケンスの中点です。 -1, -1, -1, -1,-1
このitertools
方法はおそらくより良く、よりクリーンです。それでも、これはmath
、statistics
数値の各セットの開始インデックスと終了インデックスの中央値を使用して検索する方法です。
import math
import statistics as stat
a = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0]
lastNum = None
startIdx = 0
midpts = []
for idx, x in enumerate(a):
if lastNum is not None and lastNum != x or idx == len(a) - 1:
midpts.append(math.floor(stat.median([startIdx, idx])))
startIdx = idx
lastNum = x
print(midpts)
# [2, 8, 14, 19]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加