に等しい場合、値を保持し、私は(連続mesuresを表す)信号のリストを持っている:PythonリストのみN先行
signals = [0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0]
Iは、過去n mesuresに等しい場合に信号が有効考えます。
例:検証のために2つのメッシュしか考慮しない場合、最初の信号は0から1に変化しますが、それでも0と見なされますが、次のメッシュと見なされます。再度1であれば、それはまだ有効です。 0のメッシュを0に戻すなど、ここで信号は0と1ですが、私のアプリケーションでは他の整数にすることができます。
所望の出力:私はそれを行うのpythonesqueワンライナーの方法の探していたが、所望の出力を見つけることができないよう
# For n = 2:
valid_s = [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
# For n = 3:
valid_s = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0]
# For n = 4:
valid_s = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0]
。
S = signals
# For n = 2
[S[i] if S[i] == S[i-1] else S[i-2] for i, _ in enumerate(S)]
# gives [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
# For n = 3
[S[i] if S[i] == S[i-1] == S[i-2] else S[i-3] for i, _ in enumerate(S)]
# gives [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
編集:私は線に沿って何かをしようとしたことがすでにインポートだとして、それが容易になります場合、私はnumpy
に開いています。
n = 2の出力は正しいですか?あなたは、測定値または既に "修正された"以前の値にのみ出力を基づいていますか? – voiDnyx
はい、n = 2の場合、1または0に切り替えることを検討するには2つの連続する1または0が必要です。2つ連続していない場合、前に既に検証された値を保持します。したがって、n = 2に対する所望の出力。 – Fredovsky