数値シーケンス(たとえば1次元配列)では、異なるパターンの数字を見つけて、それぞれの結果を別々に数えたいと思う。しかし、数字は繰り返し発生することがありますが、基本パターンだけが重要です。Python配列の数値シーケンスを検出してカウントする
# Example signal (1d array)
a = np.array([1,1,2,2,2,2,1,1,1,2,1,1,2,3,3,3,3,3,2,2,1,1,1])
# Search for these exact following "patterns": [1,2,1], [1,2,3], [3,2,1]
# Count the number of pattern occurrences
# [1,2,1] = 2 (occurs 2 times)
# [1,2,3] = 1
# [3,2,1] = 1
私は私に検索されたパターンのインデックスを与えるクヌース - モリス - プラットの文字列マッチング(http://code.activestate.com/recipes/117214/)、が出ています。
for s in KnuthMorrisPratt(list(a), [1,2,1]):
print('s')
問題は、私は、パターンシーケンスの[1,2,1]「皮革」[1,2,2,2,1]の場合を、見つける方法がわからない、です。私は[1,2,1]に到達するために、この繰り返し数のシーケンスを減らす方法を見つける必要があります。何か案は?
"パターン" を構成するもの?あなたの問題は非常に幅広く聞こえる。 –
問題の解決方法を示してください。 –
は、あなたが探しているパターンはあらかじめ定義されていますか?またはあなたはトリプレットのすべての可能なパターンを見つけたいですか? – armak