본문 바로가기
파이썬

파이썬 단일 값이 속하는 히스토그램 빈을 찾는 빠른 방법은 무엇입니까?

by º기록 2020. 9. 12.
반응형

빈이 다음과 같은 히스토그램의 예가 있습니다.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

5.6 과 같은 값이 주어지면 주어진 값이 히스토그램에 속하는 빈 목록의 인덱스를 얻을 수 있기를 원하므로이 예제에서는 i = 4 5 입니다. 또한 주어진 값이 항상 빈 범위 내에 있다고 가정 할 수 있습니다. 루프로 이것을 할 수 있고 비교 검사를 할 수 있다는 것을 알고 있지만 더 빠른 방법이 있습니까?

 

해결 방법

 


import bisect

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bisect.bisect(l, 5.6) - 1
# 4

더 큰 목록의 경우 파이썬 루프보다 훨씬 빠릅니다.

import bisect

l = list(range(100000))
n = 79587.6

%timeit next(x[0]-1 for x in enumerate(l) if x[1] > n)
# 8.33 ms ± 22.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit bisect.bisect(l, n) - 1
# 800 ns ± 0.769 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

 

참조 페이지 https://stackoverflow.com/questions/63759406

 

 

반응형

댓글