파이썬을 사용하여 데이터 분석, 과학 계산, 인공지능, 머신러닝 등을 공부하다 보면 반드시 만나게 되는 라이브러리가 있습니다. 바로 **NumPy(넘파이)**입니다. NumPy는 “Numerical Python”의 약자로, 대규모 데이터 배열과 행렬 연산을 효율적으로 처리할 수 있는 강력한 기능을 제공합니다. 이 글에서는 NumPy가 무엇인지, 왜 중요한지, 그리고 주요 기능에 대해 알아보겠습니다.
NumPy란?
NumPy는 수학적 연산과 대규모 데이터 처리를 위해 설계된 파이썬 라이브러리입니다. 핵심은 **ndarray(다차원 배열)**라는 데이터 구조로, 이 구조는 일반적인 파이썬 리스트보다 훨씬 빠르고 메모리 효율적입니다.
NumPy는 다음과 같은 이유로 “수학의 왕”이라고 불립니다:
- 다차원 배열 연산을 지원
- 고성능 선형 대수 연산 및 푸리에 변환 기능 제공
- 복잡한 수학적 계산을 간결하고 효율적으로 처리 가능
1. NumPy 설치하기
NumPy를 사용하려면 먼저 설치해야 합니다. 대부분의 최신 파이썬 배포판에는 NumPy가 기본적으로 포함되어 있지만, 없는 경우 아래 방법으로 설치할 수 있습니다.
- 파이썬 패키지 관리자(PIP)를 사용한 설치 터미널(또는 명령 프롬프트)에 다음 명령어를 입력합니다:설치가 완료되면, NumPy 라이브러리를 사용할 준비가 끝났습니다.
- pip install numpy
- 설치 확인 NumPy가 제대로 설치되었는지 확인하려면 아래 코드를 실행합니다:결과로 NumPy의 버전 번호가 출력되면 성공적으로 설치된 것입니다. 예: 1.24.3
- import numpy as np print(np.__version__)
2. NumPy 시작하기
NumPy를 사용하려면 파이썬 코드의 맨 위에 라이브러리를 불러와야 합니다. 관례적으로 numpy는 np라는 별칭으로 임포트합니다:
import numpy as np
이제 NumPy를 사용할 준비가 되었습니다.
3. NumPy의 주요 기능 살펴보기
(1) 배열 생성하기
NumPy의 핵심은 ndarray라는 데이터 구조입니다. 배열을 생성하려면 np.array()를 사용합니다.
- 1차원 배열 생성:결과:
- [1 2 3 4 5] 배열의 차원: 1 배열의 형태: (5,) 배열의 자료형: int64
- import numpy as np array_1d = np.array([1, 2, 3, 4, 5]) print(array_1d) print(“배열의 차원:”, array_1d.ndim) print(“배열의 형태:”, array_1d.shape) print(“배열의 자료형:”, array_1d.dtype)
- 2차원 배열 생성:결과:
- [[1 2 3] [4 5 6]] 배열의 차원: 2 배열의 형태: (2, 3)
- array_2d = np.array([[1, 2, 3], [4, 5, 6]]) print(array_2d) print(“배열의 차원:”, array_2d.ndim) print(“배열의 형태:”, array_2d.shape)
(2) 배열 생성 단축 함수
NumPy는 다양한 배열 생성 도구를 제공합니다:
- 0으로 채워진 배열 생성:결과:
- [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
- zeros = np.zeros((3, 3)) print(zeros)
- 1로 채워진 배열 생성:결과:
- [[1. 1. 1. 1.] [1. 1. 1. 1.]]
- ones = np.ones((2, 4)) print(ones)
- 특정 범위의 값으로 배열 생성:결과:
- [1 3 5 7 9]
- range_array = np.arange(1, 10, 2) print(range_array)
(3) 배열의 크기와 형태 조정
NumPy 배열의 크기와 형태를 조정하려면 reshape()를 사용합니다.
array = np.array([1, 2, 3, 4, 5, 6]) reshaped_array = array.reshape(2, 3) print(reshaped_array)
결과:
[[1 2 3] [4 5 6]]
(4) 배열 연산
NumPy는 배열 단위로 수학 연산을 처리할 수 있습니다:
array = np.array([1, 2, 3]) print("배열 곱셈:", array * 2) print("배열 덧셈:", array + 5)
결과:
배열 곱셈: [2 4 6] 배열 덧셈: [6 7 8]
(5) 배열의 통계 연산
- 배열의 합계:결과: 10
- array = np.array([1, 2, 3, 4]) print(“합계:”, np.sum(array))
- 평균값:결과: 2.5
- print(“평균값:”, np.mean(array))
(6) 랜덤 배열 생성
NumPy는 난수 생성도 쉽게 처리할 수 있습니다:
random_array = np.random.random((2, 3)) print(random_array)
결과:
[[0.5488135 0.71518937 0.60276338] [0.54488318 0.4236548 0.64589411]]
(7) 행렬 연산
NumPy는 선형 대수 연산을 지원합니다:
matrix_a = np.array([[1, 2], [3, 4]]) matrix_b = np.array([[5, 6], [7, 8]]) result = np.dot(matrix_a, matrix_b) print(result)
결과:
[[19 22] [43 50]]
4. 실전 예제: 간단한 데이터 분석
아래는 NumPy를 사용하여 간단한 데이터 분석을 수행하는 예제입니다:
import numpy as np # 데이터 생성 data = np.array([23, 45, 67, 89, 12, 34, 56]) # 통계 계산 mean = np.mean(data) median = np.median(data) std_dev = np.std(data) print("평균값:", mean) print("중앙값:", median) print("표준편차:", std_dev)
결과:
평균값: 46.57142857142857 중앙값: 45.0 표준편차: 25.785300403901194
5. NumPy 활용 팁
- 문서 읽기: NumPy의 공식 문서(https://numpy.org/doc/)는 모든 기능과 예제를 제공합니다.
- 최적화된 코드 작성: NumPy는 배열 연산을 최대한 활용하는 방식으로 코드를 작성하면 성능이 매우 좋아집니다.

이제 NumPy의 설치부터 다양한 기능까지 익혔습니다. NumPy는 데이터 과학의 기초를 다지는 도구이니, 위 내용을 바탕으로 실습하며 더 깊이 이해해 보세요!