2017-07-26 14 views
0

私は分類器によって確率の順に生成された5つの垂直文字列を持っています。分類器の信頼度が非常に高い場合、私はその分類を保持したいが、低い分類器では、すべての可能な組み合わせの間で変えたいと思う。文字列の組み合わせを行ごとに取得

ので、私のデータは次のようになります。

aa aa aa aa aa 
ab ac aa ad ae 
aa ab af ae ag 

と私は可能な組み合わせ

aa aa aa aa aa aa aa aa aa aa ... 
ab ac aa ad ae ae ab ac aa ad ... 
aa ab af ae ag aa ab af ae ag... 

のすべてを取得したいと思い、私はitertoolsを試してみましたが、私は適切なツールを見つけることができないようこれをする。誰もこれを行う方法を知っていますか?

[UPDATE]

これは私がこれまで試してみましたです:

for x in new_lines: 
    for a,b,c,d,e,f,g,h,i,j in permutations(x.split(), 10): 
     print '{} {} {} {} {} {} {} {} {} {}'.format(a.rstrip('\n'), b.rstrip('\n'), c.rstrip('\n'), d.rstrip('\n'), e.rstrip('\n'), f.rstrip('\n'), g.rstrip('\n'), h.rstrip('\n'), i.rstrip('\n'), j.rstrip('\n')) 
+0

[itertools.permutations](https://docs.python.org/2/library/itertools.html?highlight=permutations#itertools.permutations)機能が必要なようです。 –

+0

@MikeRobins、それは私がitertoolsで試してきたことです。私は爆発しないように10を置くが、出力は空である。もし私が5を動かすと、 – badner

+0

は5要素セットの要素の順列が10個もないので、空の出力は正しく聞こえる。また、繰り返しループやリストを使用しているコードを入力することをお勧めします。 –

答えて

1

すべての要素が等しいエントリを除く、あなたは文字列"aa ab ac ad ae af ag"の交換と三重項の組み合わせをしたいようです。

コード

import itertools as it 


iterable = "aa ab ac ad ae af ag".split() 

combs = it.combinations_with_replacement(iterable, 3) 
pred = lambda x: len(set(x)) != 1 
results = list(filter(pred, combs)) 
transposed = list(zip(*results)) 

デモ

>>> for line in transposed: 
...  print(line) 
('aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', ...) 
('aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'ab', 'ab', 'ab', 'ab', 'ab', ...) 
('ab', 'ac', 'ad', 'ae', 'af', 'ag', 'ab', 'ac', 'ad', 'ae', 'af', ...) 

オプション

あなたは1行で発電機として、このコードを簡素化することができます。

transposed = zip(*(i for i in it.combinations_with_replacement(iterable, 3) if len(set(i)) != 1)) 
関連する問題