파이썬 라이브러리 수학의 왕: NumPy

파이썬을 사용하여 데이터 분석, 과학 계산, 인공지능, 머신러닝 등을 공부하다 보면 반드시 만나게 되는 라이브러리가 있습니다. 바로 **NumPy(넘파이)**입니다. NumPy는 “Numerical Python”의 약자로, 대규모 데이터 배열과 행렬 연산을 효율적으로 처리할 수 있는 강력한 기능을 제공합니다. 이 글에서는 NumPy가 무엇인지, 왜 중요한지, 그리고 주요 기능에 대해 알아보겠습니다.


NumPy란?

NumPy는 수학적 연산과 대규모 데이터 처리를 위해 설계된 파이썬 라이브러리입니다. 핵심은 **ndarray(다차원 배열)**라는 데이터 구조로, 이 구조는 일반적인 파이썬 리스트보다 훨씬 빠르고 메모리 효율적입니다.
NumPy는 다음과 같은 이유로 “수학의 왕”이라고 불립니다:

  • 다차원 배열 연산을 지원
  • 고성능 선형 대수 연산 및 푸리에 변환 기능 제공
  • 복잡한 수학적 계산을 간결하고 효율적으로 처리 가능

1. NumPy 설치하기

NumPy를 사용하려면 먼저 설치해야 합니다. 대부분의 최신 파이썬 배포판에는 NumPy가 기본적으로 포함되어 있지만, 없는 경우 아래 방법으로 설치할 수 있습니다.

  1. 파이썬 패키지 관리자(PIP)를 사용한 설치 터미널(또는 명령 프롬프트)에 다음 명령어를 입력합니다:설치가 완료되면, NumPy 라이브러리를 사용할 준비가 끝났습니다.
  2. pip install numpy
  3. 설치 확인 NumPy가 제대로 설치되었는지 확인하려면 아래 코드를 실행합니다:결과로 NumPy의 버전 번호가 출력되면 성공적으로 설치된 것입니다. 예: 1.24.3
  4. 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는 배열 연산을 최대한 활용하는 방식으로 코드를 작성하면 성능이 매우 좋아집니다.

DALL·E 2024-12-12 21.10.05 – An educational illustration showcasing Python NumPy processing. The image includes a digital representation of a computer screen displaying Python cod

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