IT/Python

[Python] NumPy를 이용한 수치계산 기초

멋진 선배 2025. 1. 11. 10:42
반응형

파이썬의 강력한 수치 계산 라이브러리인 NumPy에 대해서 알아보도록 하겠습니다. NumPy는 대규모 다차원 배열과 행렬을 효율적으로 처리할 수 있는 도구로, 데이터 분석과 과학 계산에 필수적인 라이브러리 입니다.

NumPy 소개

NumPy는 "Numerical Python"의 줄임말로, 파이썬에서 수치 계산을 위한 핵심 라이브러리 입니다. 

주요 특징

  1. 고성능 다차원 배열 객체(ndarray)
  2. 브로드캐스팅 기능을 통한 백터화 연산
  3. 반복문 없이 전체 데이터 배열에 대한 빠른 연산 지원
  4. 선형대수, 푸리에 변환, 난수 생성 등 다양한 수학 함수 제공

NumPy 설치 및 임포트

NumPy를 사용하기 위해서는 먼저 설치해야 합니다.

pip install numpy

그리고 파이썬 코드에서 다음과 같이 임포트 합니다.

import numpy as np

NumPy 배열 생성

NumPy의 기본 데이터 구조는 ndarray(n-dimensional array) 입니다. 다양한 방법으로 배열을 생성할 수 있습니다.

실행결과

import numpy as np

# 리스트로부터 배열 생성
arr1 = np.array([1,2,3,4,5])

# 0으로 채워진 배열 생성
arr2 = np.zeros((3,3))

# 1로 채워진 배열 생성
arr3 = np.ones((2,4))

# 특정 범위의 균일한 간격의 숫지로 배열 생성
arr4 = np.arange(0, 10, 2)

# 랜덤한 값으로 배열 생성
arr5 = np.random.rand(3,3)

print("arr1", arr1)
print("arr2", arr2)
print("arr3", arr3)
print("arr4", arr4)
print("arr5", arr5)

배열의 기본 속성

NumPy 배열의 주요 속성들을 사렾보겠습니다.

실행결과

import numpy as np

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

print(arr.shape) # 배열의 형태
print(arr.ndim)  # 배열의 차원
print(arr.dtype) # 배열의 데이터 타입
print(arr.size)  # 배열의 전체 원소

배열 연산

NumPy의 강력한 기능 중 하나는 배열 간 연산 입니다. 이를 통해 백터화된 연산을 수행할 수 있습니다.

실행 결과

ipmort numpy as np

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

# 배열간 덧셈
print(a+b)

# 배열간 스칼라 곱샘
print(a*2)

# 배열간 곱셈
print(a*b)

# 행렬 곱
c = np.array([[1,2], [3,4]])
d = np.array([[5,6], [7,8]])
print(np.dot(c, d))

배열 인덱싱과 슬라이싱

NumPy 배열은 파이썬 리스트와 유사한 방식으로 인덱싱과 슬라이싱이 가능합니다.

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

# 특정 원소 접근
print(arr[1, 2])  # 7

# 행 전체 선택
print(arr[1])  # [5 6 7 8]

# 열 전체 선택
print(arr[:, 1])  # [2 6 10]

# 부분 배열 선택
print(arr[0:2, 1:3])  # [[2 3]
                      #  [6 7]]

배열 변경

배열의 형태를 변경하거나 차원을 추가/제거 할 수 있습니다.

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

# 배열 형태 변경
reshaped = arr.reshape((2, 3))
print(reshaped)  # [[1 2 3]
                 #  [4 5 6]]

# 새로운 축 추가
expanded = np.expand_dims(arr, axis=0)
print(expanded.shape)  # (1, 6)

# 1인 차원 제거
squeezed = np.squeeze(expanded)
print(squeezed.shape)  # (6,)

수학 함수

NumPy는 다양한 수학 함수를 제공 합니다.

import numpy as np

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

print(np.sum(arr))     # 합계: 10
print(np.mean(arr))    # 평균: 2.5
print(np.std(arr))     # 표준편차: 1.118...
print(np.exp(arr))     # 지수 함수: [2.718... 7.389... 20.085... 54.598...]
print(np.log(arr))     # 자연로그: [0. 0.693... 1.098... 1.386...]
print(np.sin(arr))     # 사인 함수: [0.841... 0.909... 0.141... -0.756...]

브로드캐스팅

브로드캐스팅은 크기가 다른 배열 간의 연산을 가능하게 하는 NumPy의 강력한 기능 입니다.

import numpy as np

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

print(a + b)  # [[11 22 33]
              #  [14 25 36]]

여기서 b는 자동으로 a의 형태에 맞춰서 연산 됩니다.

 

마치며

이상으로 NumPy를 이용한 수치 계산의 기초에 대해서 알아보았습니다. NumPy는 데이터 분석, 머신러닝, 과학 계산 등 다양한 분야에서 필수적으로 사용되는 라이브러리 입니다. 이번에 다른 NumPy의 기능 중 일부에 불과하며, 더 많은 고급 기능들이 있습니다.

반응형