사실 넘파이 배열을 다룰 때는 최적화된 넘파이 내장 함수로 이런 연산들을 처리할 수 있습니다. 넘파이는 BLAS(Basic Linear Algebra Subprogram) 구현에 복잡한 일들을 위임합니다.20 BLAS는 고도로 병렬화되고 효율적인 저수준의 텐서 조작 루틴이며, 전형적으로 포트란(Fortran)이나 C 언어로 구현되어 있습니다.
넘파이는 다음과 같은 원소별 연산을 엄청난 속도로 처리합니다.
import numpy as np z = x + y ➊ z = np.maximum(z, 0.) ➋
➊ 원소별 덧셈
➋ 원소별 렐루 함수
실제 시간 차이를 재어 보죠.
import time x = np.random.random((20, 100)) y = np.random.random((20, 100)) = time.time() for in range(1000): = x + y = np.maximum( , 0.) print("걸린 시간: {0:.2f} s".format(time.time() - ))