Skip to content

Instantly share code, notes, and snippets.

@lseongjoo
Last active August 29, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lseongjoo/1e3f7d15b60b1f1c0838 to your computer and use it in GitHub Desktop.
Save lseongjoo/1e3f7d15b60b1f1c0838 to your computer and use it in GitHub Desktop.
반복문 대신 NumPy 배열 사용
import random
import numpy as np
def gen_sim_pure_python():
"""Pure Python"""
prices = [[np.random.randint(5,1000)] for i in range(10)]
changes = [[np.random.uniform(-0.3, 0.3) for i in range(90)] for i in range(10)]
for p, c in zip(prices, changes):
for delta in c:
p.append(p[-1]*(1+delta))
return prices
def gen_sim_price(num_stocks=10, num_days=90):
"""주식 종목 가격 시뮬레이션.
지정된 종목 개수에 대한 지정된 일수만큼의 모의 가격 생성"""
prices = np.random.randint(5,1000, size=num_stocks)
changes = 1+np.random.uniform(low=-0.3, high=0.3,
size=(num_days, num_stocks))
prices = prices * changes.cumprod(0)
return prices
@lseongjoo
Copy link
Author

주식 종목 10개의 90일간의 가격이 하루 [-30%, 30%] 범위에서 무작위로 변경된다고 가정한 가격 시뮬레이션 생성 함수 정의: 1) 순수 파이썬으로 작성한 gen_sim_pure_python과 2) numpy를 활용해 같은 작업을 수행하는 gen_sim_numpy 함수입니다.

파이썬의 NumPy와 Pandas를 사용하면, 반복문을 거의 사용하지 않고도 데이터를 처리할 수 있습니다. 작성하고 관리하는 코드가 줄어들 뿐만 아니라, 성능도 최대 수 백배까지 빠릅니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment