본문 바로가기
인공지능/데이터 분석

NumPy(넘파이) 라이브러리

by 클레어몬트 2024. 12. 24.

ㅁNumPy: Python에서 과학 계산을 위해 널리 사용되는 핵심 라이브러리

Numerical Python의 약자인 NumPy는 다차원 배열 객체와 배열을 효율적으로 처리하기 위한 다양한 함수들을 제공한다. NumPy는 고성능의 다차원 배열을 지원하며, 데이터 분석, 수치 계산, 머신러닝 등 다양한 분야에서 활용된다.

 

 

[NumPy의 주요 기능 4가지]

  1. 다차원 배열 객체 (ndarray)
    NumPy의 중심에는 ndarray라는 다차원 배열 객체가 있다. 이 객체는 동일한 데이터 유형을 가지는 요소들을 효율적으로 저장하고 조작할 수 있도록 설계되었다
  2. 수학 및 통계 함수
    NumPy는 배열 데이터를 기반으로 다양한 수학적 연산(예: 합계, 평균, 표준편차 등)을 지원한다
  3. 벡터화 연산
    NumPy는 반복문을 제거하고 배열 전체에 대해 연산을 수행하는 벡터화 연산을 지원하여 코드를 간결하고 효율적으로 만들어준다
  4. 선형대수와 푸리에 변환
    선형대수 계산과 고급 수학적 기능(예: 역행렬 계산, 행렬 곱셈 등)을 지원한다

 

(설치방법) 다른 파이썬 라이브러리들과 똑같다

pip install numpy

 

 

(라이브러리 호출 예시)

import numpy as np

print(np.__version__) # 설치된 NumPy 버전 확인

 

 

 

[NumPy 사용 예제]

1. 배열 생성

import numpy as np

# 1차원 배열 생성
arr1 = np.array([1, 2, 3, 4, 5])

# 2차원 배열 생성
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

# 배열 초기화 예제
zeros = np.zeros((2, 3))  # 2x3 배열, 모든 값이 0
ones = np.ones((3, 3))    # 3x3 배열, 모든 값이 1
range_array = np.arange(0, 10, 2)  # 0부터 10까지 2씩 증가

 

2. 배열 연산

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 요소별 연산
print(a + b)  # 출력: [5 7 9]
print(a * b)  # 출력: [4 10 18]

# 스칼라 연산
print(a * 2)  # 출력: [2 4 6]

 

3. 배열 통계

arr = np.array([[1, 2, 3], [4, 5, 6]])

print(np.sum(arr))       # 전체 합계
print(np.mean(arr))      # 평균
print(np.max(arr))       # 최대값
print(np.min(arr))       # 최소값
print(np.sum(arr, axis=0))  # 열 기준 합계
print(np.sum(arr, axis=1))  # 행 기준 합계

 

4. 배열의 형태 변경

arr = np.array([[1, 2, 3], [4, 5, 6]])

reshaped = arr.reshape((3, 2))  # 2x3 배열을 3x2 배열로 변환
flattened = arr.flatten()       # 1차원 배열로 변환
transposed = arr.T              # 배열 전치

 

 

 

[NumPy의 장점]

  1. 빠른 연산 속도
    NumPy는 C로 구현되어 있어 Python 기본 리스트보다 훨씬 빠른 연산 속도를 제공한다
  2. 메모리 효율성
    NumPy 배열은 데이터 유형을 고정하여 메모리를 효율적으로 사용한다
  3. 다양한 활용 분야
    데이터 분석, 머신러닝, 시뮬레이션 등 다양한 분야에서 사용 가능하다

 

NumPy는 데이터를 다루는 데 있어 필수적인 도구이며, 그 강력한 기능과 효율성 덕분에 Python의 데이터 처리 생태계에서 중심적인 위치를 차지하고 있다. 데이터를 효율적으로 처리하고 다양한 수학적 계산을 수행하고자 한다면, NumPy는 가장 먼저 배우고 활용해야 할 라이브러리이다.

NumPy vs Pandas