NumPy

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.06
조회수
9
버전
v2

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.

NumPy

NumPy( erical Python의 약자)는 파이썬에서 과학적 계산을 수행하기 위한 핵심 라이브러리로, 대규모치 데이터를 효율적으로 처리할 수 있는 다차 배열 객체(nd)와 이를 다루기 위한 다양한 수학 함수를 제공합니다. 특히 데이터과학, 머신러닝, 물리학, 공학 등 다양한 분야에서 기본 도구로 사용되며, Pandas, SciPy, scikit-learn, TensorFlow 등 많은 파이썬 기반 라이브러리의 기반을 이루고 있습니다.

NumPy는 C 언어로 핵심 연산을 구현하여 높은 성능을 제공하며, 파이썬의 기본 리스트에 비해 메모리 효율성과 계산 속도 면에서 월등한 성능을 보입니다.


개요

NumPy는 2005년에 Travis Oliphant에 의해 개발된 오픈소스 라이브러리로, 파이썬을 과학 계산용 언어로 확장하기 위한 목적으로 설계되었습니다. NumPy의 중심은 N차원 배열(ndarray) 객체이며, 이 배열을 통해 벡터, 행렬, 텐서 등의 수학적 구조를 자연스럽게 표현하고 연산할 수 있습니다.

NumPy는 다음과 같은 주요 기능을 제공합니다:


주요 기능과 특징

1. ndarray: N차원 배열 객체

NumPy의 핵심은 numpy.ndarray 클래스입니다. 이 객체는 동일한 데이터 타입의 요소로 구성된 고정 크기의 다차원 배열이며, 메모리 상에서 연속적으로 저장되어 빠른 접근이 가능합니다.

import numpy as np

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

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

ndarray는 다음과 같은 속성을 가집니다:

속성 설명
[shape](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B5%AC%EC%A1%B0/%ED%85%90%EC%84%9C/shape) 배열의 차원 구조 (예: (3, 4)는 3행 4열)
dtype 배열 요소의 데이터 타입 (int32, float64 등)
[size](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B5%AC%EC%A1%B0/%ED%85%90%EC%84%9C/size) 전체 요소의 개수
[ndim](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B5%AC%EC%A1%B0/%ED%85%90%EC%84%9C/ndim) 차원 수 (1차원, 2차원 등)

2. 배열 생성 방법

NumPy는 다양한 방식으로 배열을 생성할 수 있습니다.

  • np.array(): 파이썬 리스트 등으로부터 배열 생성
  • [np.zeros](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%83%9D%EC%84%B1/np.zeros)(), [np.ones](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%83%9D%EC%84%B1/np.ones)(): 0 또는 1로 채워진 배열 생성
  • [np.arange](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%83%9D%EC%84%B1/np.arange)(): 특정 범위의 숫자를 포함하는 배열 생성
  • [np.linspace](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%83%9D%EC%84%B1/np.linspace)(): 균등 간격의 숫자 배열 생성
  • [np.random.rand](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%82%9C%EC%88%98%20%EC%83%9D%EC%84%B1/np.random.rand)(): 난수로 구성된 배열 생성

zeros = np.zeros((2, 3))        # 2x3 배열, 모든 요소 0
ones = np.ones((2, 2))          # 2x2 배열, 모든 요소 1
range_arr = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
random_arr = np.random.rand(3)  # [0,1) 범위의 난수 3개


3. 배열 연산

NumPy 배열은 요소별(element-wise) 연산을 기본적으로 지원합니다. 이는 별도의 반복문 없이도 벡터화된 연산을 가능하게 하여 성능을 크게 향상시킵니다.

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) # [1 4 9]

또한 선형대수 연산도 지원합니다:

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 행렬 곱셈
C = np.dot(A, B)
# 또는 A @ B (파이썬 3.5+)


4. 브로드캐스팅 (Broadcasting)

브로드캐스팅은 크기가 다른 배열 간의 연산을 가능하게 하는 강력한 기능입니다. 작은 배열이 자동으로 큰 배열의 형태에 맞춰 확장되어 연산됩니다.

arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 10
result = arr + scalar  # 모든 원소에 10이 더해짐

이 기능은 벡터화된 코드 작성을 단순화하며, 성능 저하 없이 수학적 표현을 직관적으로 구현할 수 있게 합니다.


5. 인덱싱과 슬라이싱

NumPy는 고급 인덱싱 기능을 제공합니다.

arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4])           # [20 30 40]
print(arr[arr > 25])      # [30 40 50]

# 2차원 배열에서 특정 행/열 선택
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[1, :])       # [4 5 6] (2번째 행)
print(matrix[:, 0])       # [1 4 7] (1번째 열)


성능 이점

NumPy는 파이썬의 기본 리스트에 비해 다음과 같은 성능 이점을 제공합니다:

  • 속도: C로 구현된 저수준 연산을 사용하여 빠른 계산
  • 메모리 효율: 배열 요소가 동일한 타입이므로 메모리 패킹이 효율적
  • 벡터화: 반복문 없이 전체 배열 연산 가능 → 코드 간결 + 속도 향상

예를 들어, 백만 개의 숫자를 제곱하는 연산에서 NumPy는 파이썬 리스트의 for 루프보다 수십 배 빠릅니다.


관련 라이브러리와 생태계

NumPy는 파이썬 과학 계산 생태계의 기반이며, 다음 라이브러리들이 NumPy 배열을 기본 데이터 구조로 사용합니다:

  • Pandas: 데이터 분석용, NumPy 배열 기반의 SeriesDataFrame
  • SciPy: 과학적 계산 및 수치 알고리즘
  • Matplotlib: 시각화, NumPy 배열을 입력으로 사용
  • scikit-learn: 머신러닝, 학습 데이터를 NumPy 배열로 처리

참고 자료

NumPy는 현대 데이터과학의 필수 도구로, 그 사용법을 익히는 것은 파이썬 기반 과학 계산의 첫걸음이라 할 수 있습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?