목표 : 문자열 목록에서 얻은 모든 가능한 순열 세트를 얻고 싶습니다 (또는 함께 작업 할 수 있습니다). 파이썬에서거대한 순열 대상 집합 (파이썬 또는 R)
예 :
# Get set of permutations
set1_perm = set(itertools.permutations(list1))
len(set1_perm)
6
set1_perm
{('A', 'A', 'B', 'B'),
('A', 'B', 'A', 'B'),
('A', 'B', 'B', 'A'),
('B', 'A', 'A', 'B'),
('B', 'A', 'B', 'A'),
('B', 'B', 'A', 'A')}
을 지금은 이것이다 : 내 분석 ('A', 'A', 'B', 'B')
에 대한 이후
import pandas as pd
import itertools
list1 = ['A', 'A', 'B', 'B']
# Get all permutations
list1_perm = list(itertools.permutations(list1))
len(list1_perm)
24
list1_perm
[('A', 'A', 'B', 'B'),
('A', 'A', 'B', 'B'),
('A', 'B', 'A', 'B'),
('A', 'B', 'B', 'A'),
('A', 'B', 'A', 'B'),
('A', 'B', 'B', 'A'),
('A', 'A', 'B', 'B'),
('A', 'A', 'B', 'B'),
('A', 'B', 'A', 'B'),
('A', 'B', 'B', 'A'),
('A', 'B', 'A', 'B'),
('A', 'B', 'B', 'A'),
('B', 'A', 'A', 'B'),
('B', 'A', 'B', 'A'),
('B', 'A', 'A', 'B'),
('B', 'A', 'B', 'A'),
('B', 'B', 'A', 'A'),
('B', 'B', 'A', 'A'),
('B', 'A', 'A', 'B'),
('B', 'A', 'B', 'A'),
('B', 'A', 'A', 'B'),
('B', 'A', 'B', 'A'),
('B', 'B', 'A', 'A'),
('B', 'B', 'A', 'A')]
합니다 ('A'
이 위치를 변경되었을 수 있지만), 내가이, ('A', 'A', 'B', 'B')
과 동일 좋아,하지만 함께 작업하고 싶은 목록에는 481 개의 문자열이 있으며 다른 주파수의 5 개의 고유 한 문자열이 있습니다.
len(real_list)
481
len(set(real_list))
5
# Count number of times each unique value appears
pd.Series(real_list).value_counts()
A 141
B 116
C 80
D 78
E 66
이것은 itertools.permutations(real_list)
의 문제는 아니지만, set
을 얻고 자 할 때 시간이 오래 걸립니다. 이는 순열 수가 9.044272819E+1082
이기 때문입니다.
내가 원하는 작업은 다음과 같습니다. 먼저 해당 순열 공간의 고유 요소 수, 즉 세트 길이를 알고 싶습니다. 고유 한 요소의 수를 얻으려면 분석적으로 수행하는 것이 가능할 수 있지만 각 고유 요소의 빈도가 다르므로이를 수행하는 방법이 다릅니다.
두 번째 순열 세트에서 이러한 고유 한 요소의 샘플을 얻을 수 있기를 바랍니다.
제공되는 도움말에 감사드립니다. 독특한 순열의 수를 계산
최저
, 알레한드로는
이 멋진처럼 보일 수있는 독특한 샘플을 만들! 모든 설명, 코드 및 데모에 대한 많은 감사를드립니다! –
@ AlejandroJimenez-Sanchez 여러분을 환영합니다! – miradulo