range(n)
의 가능한 모든 튜플 중에서 샘플을 교체하지 않아도됩니다. 즉, (0,0), (0,1), ..., (0, n), (1,0), (1,1), ..., (1, n), ..., (n, 0), ((n, 1), (n, n)), 그리고 그 원소의 k 샘플을 얻으려고합니다. 이 컬렉션을 명시 적으로 작성하는 것을 피하기를 희망합니다.파이썬 : 2D 그리드에서 대체하지 않고 샘플링
숫자 튜플이 아닌 일련의 숫자에서 샘플을 필요로한다면 random.sample(range(n), k)
이 간단하고 효율적이라는 것을 알고 있습니다.
물론 가능한 모든 (n * n = n^2
) 튜플을 포함하는 목록을 명시 적으로 작성한 다음 random.sample
을 호출 할 수 있습니다. 하지만 k
이 n^2
보다 훨씬 작 으면 효율적이지 않을 수 있습니다.
효율성면에서 파이썬 2와 3에서 일들이 똑같이 작동하는지 확신 할 수 없습니다. 나는 파이썬 3을 사용합니다.
튜플 시퀀스는, 그래서 당신의 문장은 "오히려 숫자의 튜플보다 숫자의 순서에서 샘플을 필요로했다." 이치에 맞지 않는다. 일련의 튜플에서 샘플이 필요하다는 것을 의미합니까? 이 튜플이 어떻게 보이는지는 명확하지 않습니다. –
당신의 코드 ('random.sample (range (n), k)')는 작동하며 모든 시퀀스, 튜플,리스트, 문자열 그리고'collections.Sequence'의 서브 클래스에 적합합니다. ? –
@Regebro : '튜플에서 샘플'= 'n 튜플 시퀀스에서 k 개의 튜플 샘플'. '시퀀스의 샘플'= 'n 개의 요소의 시퀀스에서 k 개의 요소 샘플'. 내가 명확히하기 위해 질문을 편집 할 것입니다. @ S.Lott : 시퀀스 ((0,0), (0,1), (0,2), (1,0), (1,1) , (1,2), (2,0), (2,1), (2,2))을 간단하게 '범위'로 사용하여 간단히 '샘플'을 적용 할 수 있습니다. – max