Last active
August 29, 2015 14:25
-
-
Save lseongjoo/1e3f7d15b60b1f1c0838 to your computer and use it in GitHub Desktop.
반복문 대신 NumPy 배열 사용
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
주식 종목 10개의 90일간의 가격이 하루 [-30%, 30%] 범위에서 무작위로 변경된다고 가정한 가격 시뮬레이션 생성 함수 정의: 1) 순수 파이썬으로 작성한 gen_sim_pure_python과 2) numpy를 활용해 같은 작업을 수행하는 gen_sim_numpy 함수입니다.
파이썬의 NumPy와 Pandas를 사용하면, 반복문을 거의 사용하지 않고도 데이터를 처리할 수 있습니다. 작성하고 관리하는 코드가 줄어들 뿐만 아니라, 성능도 최대 수 백배까지 빠릅니다.