Python/NumPy

NumPy를 활용한 수학적 함수 적용

임베디드 친구 2025. 10. 7. 21:02
반응형

NumPy를 활용한 수학적 함수 적용

NumPy는 파이썬에서 가장 강력하고 널리 사용되는 과학 계산 라이브러리로, 대규모 다차원 배열과 행렬 연산을 효율적으로 처리할 수 있도록 설계되었습니다. NumPy는 다양한 수학적 함수와 통계적 기능을 제공하며, 오늘은 그중에서 수학적 함수(sin, cos, exp, log 등)를 사용하는 방법에 대해 알아보겠습니다.


NumPy의 수학적 함수 소개

NumPy는 벡터화된 수학 연산을 통해 빠르고 간단하게 배열의 요소에 함수 적용을 가능하게 합니다. 기본적으로 NumPy는 다음과 같은 주요 수학적 함수들을 지원합니다:

  • 삼각 함수: sin, cos, tan
  • 지수 함수: exp
  • 로그 함수: log, log10, log2
  • 기타 함수: sqrt, abs, ceil, floor

이 함수들은 배열 전체에 동시에 작동하며, 반복문을 사용하지 않고도 효율적인 계산이 가능합니다.


실습 환경 준비

NumPy의 수학적 함수를 사용하기 위해 먼저 라이브러리를 설치하고, 간단한 배열을 생성해 보겠습니다.

# NumPy 설치
# pip install numpy

import numpy as np

# 예제 배열 생성
arr = np.array([0, np.pi / 4, np.pi / 2, np.pi])
print("배열:", arr)

위 코드는 NumPy를 설치하고, 파이 값을 포함한 간단한 배열을 생성합니다. 이제 이 배열에 다양한 수학적 함수를 적용해 보겠습니다.


삼각 함수 적용

삼각 함수는 각도를 입력으로 받아 다양한 값을 계산합니다.

# sin 함수 적용
sin_values = np.sin(arr)
print("sin 값:", sin_values)

# cos 함수 적용
cos_values = np.cos(arr)
print("cos 값:", cos_values)

# tan 함수 적용
tan_values = np.tan(arr)
print("tan 값:", tan_values)

실행 결과

배열: [0.         0.78539816 1.57079633 3.14159265]
sin 값: [0.         0.70710678 1.         0.        ]
cos 값: [ 1.          0.70710678  0.         -1.        ]
tan 값: [ 0.          1.          1.63312394e+16 -0.        ]

tan 함수에서 매우 큰 값이 나타나는 이유는 tan(π/2)가 정의되지 않기 때문입니다.


지수와 로그 함수 적용

지수 함수와 로그 함수는 데이터 변환과 스케일링에서 자주 사용됩니다.

# exp 함수 적용
exp_values = np.exp(arr)
print("exp 값:", exp_values)

# 자연 로그 (log) 함수 적용
log_values = np.log(arr + 1)  # log(0) 방지를 위해 1을 더함
print("log 값:", log_values)

# 상용 로그 (log10) 함수 적용
log10_values = np.log10(arr + 1)
print("log10 값:", log10_values)

실행 결과

exp 값: [  1.           2.19328005   4.81047738  23.14069263]
log 값: [0.         0.69314718 1.09861229 1.38629436]
log10 값: [0.         0.30103    0.47712125 0.60205999]

로그 함수는 입력 값이 0일 때 계산 오류가 발생하므로, 이를 피하기 위해 입력 값에 1을 더했습니다.


기타 수학 함수

NumPy는 다음과 같은 다양한 수학적 함수도 제공합니다.

제곱근과 절대값

# sqrt 함수 적용
sqrt_values = np.sqrt(arr + 1)
print("sqrt 값:", sqrt_values)

# abs 함수 적용
abs_values = np.abs([-1, -2, -3])
print("abs 값:", abs_values)

실행 결과

sqrt 값: [1.         1.41421356 1.73205081 2.        ]
abs 값: [1 2 3]

올림과 내림

# ceil 함수 적용
ceil_values = np.ceil([1.2, 2.5, 3.7])
print("ceil 값:", ceil_values)

# floor 함수 적용
floor_values = np.floor([1.2, 2.5, 3.7])
print("floor 값:", floor_values)

실행 결과

ceil 값: [2. 3. 4.]
floor 값: [1. 2. 3.]

실제 활용 예제: 신호 생성

수학적 함수를 활용해 신호 데이터를 생성하는 간단한 예제를 살펴보겠습니다.

import matplotlib.pyplot as plt

# 시간 축 데이터 생성
t = np.linspace(0, 2 * np.pi, 100)

# sin 신호 생성
signal = np.sin(t)

# 그래프 출력
plt.plot(t, signal)
plt.title("Sine Wave")
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.grid()
plt.show()

결과

위 코드는 시간에 따라 변화하는 사인파를 생성하고, 이를 시각화합니다. 이와 같이 NumPy의 수학적 함수는 데이터 분석과 시뮬레이션에 매우 유용하게 사용됩니다.


결론

NumPy의 수학적 함수는 데이터를 변환하고 분석하는 데 매우 효과적입니다. 배열 전체에 동시에 작동하기 때문에 효율적이고, 반복문 없이도 다양한 계산을 쉽게 수행할 수 있습니다. 오늘 소개한 함수들을 활용해 여러분의 프로젝트에 더욱 강력한 수학적 도구를 추가해 보세요!

반응형