반응형
파이썬에서 벡터와 행렬 간 연산 속도는 엄청나게 느리다. 파이썬의 속도가 느리기 때문에 빠른 계산속도가 필요한 경우 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 |
---|