이 질문에 poisson
과 함께 태그를 붙였습니다.이 경우 도움이되는지 확실하지 않습니다.Python : 특정 범위에 속하는 항목 수를 기반으로 목록에서 배포판을 만듭니다.
데이터 목록에서 배포본 (이미지는 결국 이미지로 포맷 됨)을 만들어야합니다. 예를 들어
: 데이터가 시각 분포를 만들 수 있다는
data = [1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 10, 10, 10, 22, 30, 30, 35, 46, 58, 59, 59]
등. 예를 들어,이 경우 범위가 10이고 각 범위에서 적어도 3 개의 항목이 유효한 포인트가되어야한다고 말할 수 있습니다. I는 범위 0-9, 10-19, 30-39 및 50-59에> 3 개 항목이 때문에
이 예 데이터와, I는 결과ditribution = [1, 2, 4, 6]
유사 할 것으로 예상한다. 이 결과를 사용하여 최종 배포본에 존재하는 섹션이 세분화 된 이미지 (어두운 색)를 생성 할 수있었습니다. 아래에서 볼 수있는 이미지 유형의 예제를 볼 수 있으며 더 많은 데이터가 생성되었을 것입니다. 지금은 파란색 선을 무시하십시오.
나는 목록에있는 모든 항목을 통해 반복하고 같은 내 계산을하는 이것을 무력 방법을 수행하는 방법을 알고있다. 그러나 제 데이터 세트에는 수십만, 심지어 수백만 개의 숫자가있을 수 있습니다. 내 범위 (10)와 필요한 항목 수 (3)는 실제 사례에서 훨씬 더 클 것입니다. 어떤 도움감사합니다. 정렬되지 않습니다
import itertools as it
d = [k+1 for k, L in
((k, len(list(g))) for k, g in it.groupby(data,key=lambda x:x//10))
if L>=3]
data
경우, 또는 당신이 모르는 경우, itertools.groupby
에 첫 번째 인수로 sorted(data)
를 사용하는 대신 단지 :
입력 데이터가 항상 정렬되어 있습니까? –
훈련받지 않은 눈에 보면 이것은 'numpy'의 경우와 같습니다. 당신은 아마 더 잘 알고 있습니다 :) –
이것은 숙제 문제입니까? – txwikinger