bağlı değerlere sahip bir vektörün permütasyonlarını bulmak istiyorum.python itertools permütasyonları bağlı değerlerle
Ör eğer çıktı olarak diğerlerinin hepsi [0,0,1,2], [0,0,2,1], [0,1,2,0]
kombinasyonlarını ve elde etmek isteyeyim ama [0,0,1,2]
elde etmek istemiyoruz iki kez standart itertools.permutations(perm_vector)
verecekti budur.
perm_vector grows
zaman gerçekten YAVAŞ çalışır:
vectors_list = []
for it in itertools.permutations(perm_vector):
vectors_list.append(list(it))
df_vectors_list = pd.DataFrame(vectors_list)
df_gb = df_vectors_list.groupby(list(df_vectors_list.columns))
vectors_list = pd.DataFrame(df_gb.groups.keys()).T
soru aslında daha genel "hız-up" bir yapıya sahiptir. Asıl zaman, uzun vektörlerin permütasyonlarının yaratılması için harcanır - hatta ikilik olmadan bile, 12 eşsiz değerin bir vektörünün permütasyonlarının yaratılması bir "sonsuzluk" alır. Tüm permütasyon verisine erişmeden itertools itetools çağırmak için bir olasılık var mı ama demet üzerinde çalışıyor? Bu konuda
Neden Python'un itertools.permutations çiftleri içermiyor [Olası yinelenen? (Orijinal liste çiftleri olduğunda)] (http://stackoverflow.com/questions/6534430/why-does-pythons-itertools-permutations-contain-duplicates-when-the-original) –
İşte bir harici [link] (http://blog.bjrn.se/2008/04/lexicographic-permutations-using.html), yukarıdaki yorum tarafından atıfta bulunulan ve bu konuda yararlı olabilecek bir yorumdan. – Praveen
itertools modülünde bunun için bir tarif var, unique_everseen tarifini kontrol edin: https://docs.python.org/3/library/itertools.html#itertools-recipes – Copperfield