미래연구소 14기 수원캠퍼스 2주차 (2020.07.16)

Saulabi·2021년 11월 23일
0

미래연구소

목록 보기
2/12

미래연구소

커리큘럼에 따라 오늘은 vectorization (벡터화)와 numpy에 대해 공부해 보았다.먼저 벡터화란 보통 파이썬에서 for문을 쓰게 되면 코딩의 문장(양)도 많아지고 속도 또한 느려지게 된다.이를 위해 파이썬의 numpy 라이브러리를 이용하여 np.dot을 이용한 벡터화를 진행하게 되었다.

numpy 벡터, 행렬 연산을 위한 수치해석용 라이브러리로써 C언어를 기반으로 해서 속도가 빠르고 계산에 용이하다. 이후 다루게 될 데이터 처리에도 사용되며 머신러닝기법에 사용되는 tool 인 tensorflow에도 많이 사용된다.

for문을 이용

import numpy as np

a = np.random.rand(1000000)
b = np.random.rand(1000000)

%%timeit
result=0
for i in range(len(a)):
    result += a[i]*b[i]
print("result: ", result)

실행결과

result: 250426.30644118198

result: 250426.30644118198

result: 250426.30644118198

result: 250426.30644118198

1 loop, best of 3: 564 ms per loop

vectorization

import numpy as np

c = np.random.rand(1000000)
d = np.random.rand(1000000)

%%timeit
result = np.dot(c,d)
print("result: ", result)

실행결과

result:  249681.43450519053
result:  249681.43450519053
result:  249681.43450519053
result:  249681.43450519053
result:  249681.43450519053
result:  249681.43450519053
result:  249681.43450519053
.
.
.
result:  249681.43450519053
result:  249681.43450519053
1000 loops, best of 3: 1.17 ms per loop
  • 결론 : 벡터화가 더 빠른 것을 알 수 있다!

0개의 댓글