더북(TheBook)

Note ≡ 벡터화: for 루프를 벡터화된 코드로 바꾸기


a.dot(b)np.dot(a, b)8처럼 넘파이를 사용하여 배열 ab 사이의 벡터 점곱을 계산하는 대신 파이썬만 사용하여 sum([i*j for i, j in zip(a, b)])처럼 계산할 수도 있습니다.9 순수한 파이썬의 for 반복문 대신 넘파이를 사용하는 이점은 산술 연산을 벡터화하는 것입니다. 벡터화(vectorization)는 원소별 산술 연산이 자동으로 배열의 모든 원소에 적용된다는 것을 의미합니다. 한 번에 원소 하나씩 연산을 차례로 수행하는 것이 아니라 하나의 산술 연산을 배열에 대한 연속적인 명령으로 구성하면 SIMD(Single Instruction, Multiple Data)를 지원하는 최신 CPU 구조의 장점을 잘 활용할 수 있습니다. 넘파이는 C 또는 포트란으로 쓴 BLAS(Basic Linear Algebra Subprograms)와 LAPACK(Linear Algebra PACKage) 같은 고도로 최적화된 선형대수 라이브러리를 사용합니다. 넘파이를 사용하면 벡터와 행렬의 점곱 같은 기초적인 선형대수학을 사용하여 간결하고 직관적으로 코드를 작성할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.