numpy로 바꿨더니, 훨씬 빠르네.
numpy에 array count 구하는 게 없어서 불편했는데,
bincount로 대신해서 쓸 수 있었다.
numpy.bincount¶
전체 count를 구하는 것인데도 O(n)보다 더 빠른 것 같아... 내 착각인가
np.histogram이나 Counter도 쓸 수 있나보다.
find the most frequent number in a numpy vector
How can I generate a complete histogram with numpy?
결과를 python list 변수 그대로 출력해두기
execfile("...py")로 불러들일 수 있다.
계산에 1시간 쯤 걸리는 것 같다.
고친 부분
n_slots = 1000
n_iterations = 10000n_people_range = range(n_slots*2, 50000, n_iterations/100)
...
votes = numpy.random.randint(n_slots, size=n_people)
#slot_histogram, n_bins = numpy.histogram(votes)
slot_histogram = numpy.bincount(votes)
#for i in votes:
# slot_histogram[i] = slot_histogram[i] + 1
...
counts = numpy.bincount(slot_histogram)
n_0_slots = counts[0]
n_1_slots = counts[1]
...
n_0_blur_hist = [x/float(n_iterations) for x in n_0_hist]
n_1_blur_hist = [x/float(n_iterations) for x in n_1_hist]
postfix = str(n_slots) + "_" + str(n_people_range[-1] + 1)
fp = open(os.path.dirname(os.path.abspath(__file__)) + "/blur_hist_" + postfix + ".py", "w")
print >>fp, ("range_" + postfix + " = " + str(people_x_range))
print >>fp, ("n_0_hist_" + postfix + " = " + str(n_0_blur_hist))
print >>fp, ("n_1_hist_" + postfix + " = " + str(n_1_blur_hist))
fp.close()
'실생활 계산' 카테고리의 다른 글
ipad air wifi model 일본 한국 가격 비교 (0) | 2014.09.17 |
---|---|
무지루시 아로마 디퓨저는 일본이 좀 더 싸네 (0) | 2014.06.03 |
슈팅 프라이스 최대 중복 사람 수 컴퓨터 시뮬레이션 (0) | 2014.04.30 |
슈팅프라이스 확률 분포는 가격과 사람 밀도에만 관련 (0) | 2014.04.29 |
슈팅프라이스 사람들이 겹칠 확률 (0) | 2014.04.26 |