2014-09-03 2 views

답변

3

무거운 리프트는 select!으로 수행 할 수 있습니다. 파이썬에서 most_common의 동작을 재현해야 다음

using DataStructures 

most_common(c::Accumulator) = most_common(c, length(c)) 
most_common(c::Accumulator, k) = select!(collect(c), 1:k, by=kv->kv[2], rev=true) 
줄리아 (계획 됨) 함수 인수 by=kv->kv[2]에 전문화 할 수있는 능력을 얻게하고, 색인을 반환로 될 때까지 볼 때까지

성능 저하가있을 것입니다 (또한 계획되어 있음) 올바른 길이의 출력 벡터를 만들기 위해 불필요한 복사본을 수행합니다. 그러나 성능에 중대한 영향을 미치지 않는 이상 위의 사항은 정상적으로 작동해야합니다.

물론 성능 문제는보다 신중하고 저수준의 구현으로 처리 될 수 있습니다. 이것에 대한 기존 함수는 모르지만 DataStructures.jl 또는 Julia 자체에 추가 할 가치가 있습니다. 카운터 또는 누적 기가 아닌 연관성있는 콜렉션에도 의미가 있지만, 다른 이름으로 붙여야합니다.