NumPy란 무엇인가?
NumPy는 'Numerical Python'의 줄임말로, 다차원 배열 객체와 이를 효율적으로 처리할 수 있는 다양한 메서드를 제공하는 파이썬 라이브러리입니다.
NumPy를 활용하면 배열에 대해 폭넓은 연산을 수행할 수 있으며, SciPy나 Matplotlib 같은 패키지와 함께 자주 사용됩니다. 특히 NumPy와 Matplotlib을 조합하면 MatLab의 강력한 대안으로 활용할 수 있습니다. NumPy는 오픈소스 패키지이므로 누구나 자유롭게 사용할 수 있습니다. 다만 표준 파이썬 배포판에는 기본적으로 포함되어 있지 않기 때문에, pip 설치 도구를 이용해 별도로 설치해야 합니다.
Windows 환경에서는 아래 명령어로 설치할 수 있습니다.
pip install numpy
명령 프롬프트에서 위 명령을 실행한 후에는 파이썬 환경에서 NumPy를 임포트하여 바로 사용할 수 있습니다.
ndarray: NumPy의 핵심 객체
NumPy 패키지에서 가장 중요한 객체는 n차원 배열, 즉 'ndarray'입니다. ndarray는 동일한 타입의 요소들로 구성된 컬렉션을 정의하며, 0부터 시작하는 인덱싱을 통해 내부의 값에 접근할 수 있습니다. ndarray의 모든 요소는 메모리 공간에서 동일한 크기의 블록을 차지하며, 'dtype' 함수를 사용하면 각 요소의 데이터 타입을 확인할 수 있습니다. 또한 배열 슬라이싱을 통해 ndarray에서 특정 항목을 추출할 수 있으며, 추출된 항목은 배열 스칼라(array scalar) 타입의 객체로 표현됩니다.
브로드캐스팅(Broadcasting)이란?
NumPy에서 브로드캐스팅이란 산술 연산 과정에서 서로 다른 형태(shape)의 배열을 처리할 수 있는 능력을 의미합니다. 두 배열의 형태가 동일하지 않더라도 오류가 발생하지 않으며, 대신 연산이 원활하게 진행됩니다.
브로드캐스팅이 적용되려면 두 배열의 차원을 뒤에서부터 비교했을 때 각 차원의 크기가 같거나, 한쪽의 크기가 1이어야 합니다. 예를 들어 (3, 4) 형태의 배열과 (4,) 형태의 배열은 연산이 가능하지만, (3, 4)와 (5,) 형태의 배열은 호환되지 않아 오류가 발생합니다.
예제
import numpy as np
arr_1 = np.array([4, 6, 8, 0, 3])
arr_2 = np.array([11, 3, 7, 78, 999])
print("첫 번째 ndarray는 ")
print(arr_1)
print("두 번째 ndarray는 ")
print(arr_2)
arr_3 = arr_1 * arr_2
print("결과 배열은 ")
print(arr_3)
출력 결과
첫 번째 ndarray는
[4 6 8 0 3]
두 번째 ndarray는
[ 11 3 7 78 999]
결과 배열은
[ 44 18 56 0 2997]
코드 설명
필요한 라이브러리를 파이썬 환경으로 가져옵니다.
숫자 값을 포함하는 두 개의 ndarray를 정의합니다.
두 배열을 콘솔에 출력합니다.
세 번째 배열을 앞서 정의한 두 ndarray의 곱으로 계산합니다.
연산 결과로 생성된 배열을 콘솔에 출력합니다.