본문 바로가기

Code/Python7

[python] 피팅한 분포에서 랜덤 값 뽑기 일하면서 데이터의 분포 별로 랜덤 값을 뽑아야 했었는데, 기억해두면 유용할 것 같아 작성한다. 원하는 분포에 맞는 함수를 선택하고, 가진 데이터 분포에 대해 피팅하면 된다. 피팅된 함수에서 랜덤 샘플을 뽑는 방식은 직접 pdf 값을 계산하여 확률을 choice에 지정해주는 방식으로 구현하였다. 아래와 같은 그림으로 피팅된다. 아래는 코드이다. from scipy.optimize import curve_fit def gaussian(x, A, mu, sigma): return A*np.exp(-(x-mu)**2/2./sigma**2) # 피팅을 원하는 분포 저장하기 hist, bins, _ = ax.hist(data, bins=30) # 데이터 범위 저장하기 data_range = (data.min(), .. 2023. 6. 23.
[python] 코드 실행 시간 측정하기 👉 time 모듈 이용하기 import time start = time.time() # 시작시간 # 수행시간을 알고 싶은 코드 checked = [False, False] + [True]*98 for i in range(2,100): if checked[i]: for j in range(2*i, 100, i): checked[j] = False end = time.time() # 종료시간 print(end - start) # 소요시간(초 단위) 👉 timeit 이용하기 $ python -m timeit '수행시간을 재고 싶은 코드 조각' 10000 loops, best of 3: 28.6 usec per loop 1. 10000 loops : 수행시간을 알고 싶은 코드를 10000번 실행한다. 2. 10.. 2022. 8. 7.
NumPy 어레이 정렬 np.argsort() np.argsort() 정리하기 -> 오름차순으로 정렬된 값의 인덱스 반환한다. import numpy as np a = np.array([1.5, 0.2, 4.2, 2.5]) print(np.argsort(a)) # [1 0 3 2] print(a.argsort()) # [1 0 3 2] 정렬한 값 출력하기 (오름차순) b = a.argsort() print(a) # [1.5 0.2 4.2 2.5] print(a[b]) # [0.2 1.5 2.5 4.2] print(a[a.argsort()] # [0.2 1.5 2.5 4.2] 내림차순 정렬하기 #내림차순으로 정렬하기 print(a[b[::-1]]) # [4.2 2.5 1.5 0.2] print(a[b][::-1]) # [4.2 2.5 1.5 0.2] .. 2022. 5. 2.