Python/Numpy

[Python] 왜 넘파이를 사용해 ?

언킴 2022. 1. 14. 21:52
반응형

파이썬에서 벡터와 행렬 간 연산 속도는 엄청나게 느리다. 파이썬의 속도가 느리기 때문에 빠른 계산속도가 필요한 경우 C언어로 패키지를 만들어서 진행한다. 하지만 넘파이의 경우 파이썬의 연산 속도가 느린 부분을 일부 보완해줄 수 있는 엄청나게 좋은 패키지 중 하나이다. 

import numpy as np 
import time 

n = 150 

a = np.random.rand(n, n)
b = np.random.rand(n, n)
c = np.zeros([n,n])


start = time.time()

for i in range(n):
    for j in range(n):
        for k in range(n):
            c[i][j] = a[i][k] * b[k][j]
            
print(time.time() - start)

# 4.142801284790039





start = time.time()
c = np.dot(a, b)

print(time.time() - start)

# 0.0009980201721191406

위 결과를 보면 단순히 파이썬 연산으로 3중 for문을 만들어 연산하게되면 4.1428초라는 시간이 걸리지만 numpy 내에 존재하는 np.dot함수를 사용하여 행렬 연산을 진행하면 0.000998초로 거의 소요되지 않는 것을 볼 수 있다. 

 

'Python > Numpy' 카테고리의 다른 글

[Python] numpy - view, copy  (0) 2022.01.14