사실 넘파이 배열을 다룰 때는 최적화된 넘파이 내장 함수로 이런 연산들을 처리할 수 있습니다. 넘파이는 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))
    
    t0 = time.time() 
    for _ in range(1000):
        z = x + y
        z = np.maximum(z, 0.) 
    print("걸린 시간: {0:.2f} s".format(time.time() - t0))
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.