NumPy

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

NumPy

개요

NumPy(Numerical Python)는 파이썬에서 과학적 계산을 위한 핵심 라이브러리로, 대규모 수치 데이터를 효율적으로 처리할 수 있도록 다차 배열과 다양한 수학적 연산 기능을 제공합니다. NumPy는 데이터 과학, 머신러닝, 공학, 물리학 등 다양한 분야에서 기초 도구로 사용되며, pandas, SciPy, scikit-learn, matplotlib 등의 주요 데이터 과학 라이브러리들이 내부적으로 NumPy 배열을 기반으로 동작합니다.

NumPy의 핵심 데이터 구조는 [ndarray](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B5%AC%EC%A1%B0/%EB%8B%A4%EC%B0%A8%EC%9B%90%EB%B0%B0%EC%97%B4/ndarray)(n-dimensional array)로, 고정된 크기의 동일한 데이터 타입을 가진 요소들로 구성된 다차원 배열입니다. 이 구조는 파이썬의 기본 리스트보다 훨씬 빠르고 메모리 효율적입니다.


주요 기능

1. 다차원 배열(ndarray)

NumPy의 중심은 ndarray 객체입니다. 이는 1차원(벡터), 2차원(행렬), 3차원 이상의 배열을 모두 표현할 수 있습니다.

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), 차원 수(ndim), 데이터 타입(dtype) 등의 속성을 제공합니다.

print(arr2.shape)  # (2, 2)
print(arr2.ndim)   # 2
print(arr2.dtype)  # int64

2. 배열 생성 함수

NumPy는 다양한 배열 생성 도구를 제공합니다.

함수 설명
[np.zeros](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B0%B0%EC%97%B4%EC%83%9D%EC%84%B1/np.zeros)() 0으로 채워진 배열 생성
[np.ones](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B0%B0%EC%97%B4%EC%83%9D%EC%84%B1/np.ones)() 1로 채워진 배열 생성
[np.arange](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B0%B0%EC%97%B4%EC%83%9D%EC%84%B1/np.arange)() 지정된 범위의 숫자 배열 생성 (step 가능)
[np.linspace](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B0%B0%EC%97%B4%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%EC%83%9D%EC%84%B1/np.random.rand)() 난수로 채워진 배열 생성

예시:

zeros = np.zeros((3, 4))           # 3x4 크기의 0 배열
ones = np.ones(5)                  # 1차원 1 배열
sequence = np.arange(0, 10, 2)     # [0, 2, 4, 6, 8]
random_arr = np.random.rand(2, 3)  # 2x3 난수 배열

3. 벡터화 연산 (Vectorization)

NumPy는 벡터화 연산을 통해 반복문 없이 배열 전체에 대한 연산을 수행할 수 있습니다. 이는 성능을 크게 향상시킵니다.

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

# 요소별 덧셈
result = a + b  # [5, 7, 9]

# 요소별 제곱
squared = a ** 2  # [1, 4, 9]

4. 브로드캐스팅 (Broadcasting)

서로 다른 크기의 배열 간 연산을 가능하게 하는 기능입니다. 작은 배열이 자동으로 큰 배열에 맞춰 확장됩니다.

arr = np.array([[1, 2], [3, 4]])
scalar = 10
result = arr + scalar  # 모든 요소에 10을 더함
# [[11, 12], [13, 14]]


배열 조작과 인덱싱

1. 슬라이싱과 인덱싱

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[0, :])  # 첫 번째 행
print(matrix[:, 1])  # 두 번째 열

2. 배열 재구조화

[reshape](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B0%B0%EC%97%B4%EC%9E%AC%EA%B5%AC%EC%A1%B0%ED%99%94/reshape)()를 사용하여 배열의 형상을 변경할 수 있습니다.

arr = np.arange(6)
reshaped = arr.reshape((2, 3))
# [[0, 1, 2],
#  [3, 4, 5]]


성능 이점

NumPy는 C로 작성된 내부 구현을 통해 파이썬의 반복문보다 훨씬 빠른 연산을 제공합니다. 예를 들어, 백만 개의 숫자를 더하는 작업에서 NumPy는 일반적인 파이썬 리스트 반복보다 수십 배에서 수백 배 빠릅니다.

또한, 메모리 사용도 효율적입니다. NumPy 배열은 연속된 메모리 블록에 데이터를 저장하며, 데이터 타입을 명시함으로써 불필요한 오버헤드를 줄입니다.


주요 응용 분야


참고 자료 및 관련 문서

  • 공식 NumPy 문서
  • pandas: NumPy를 기반으로 한 데이터 분석 라이브러리
  • SciPy: 과학적 계산을 위한 확장 라이브러리
  • matplotlib: NumPy 배열을 기반으로 시각화 수행

NumPy는 데이터 과학의 기초이자 핵심 도구로, 파이썬을 활용한 수치 분석 작업을 시작하기 전 반드시 숙지해야 할 라이브러리입니다.

AI 생성 콘텐츠 안내

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

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

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