Post

NumPy 데이터 분석: 유니버설 함수와 고급 수학 연산

니버설 함수의 개념, 주요 유니버설 함수, 그리고 고급 수학 연산

NumPy는 데이터 분석 및 과학 계산에서 강력한 유니버설 함수(Ufunc)와 고급 수학 연산을 제공합니다. 이번 글에서는 유니버설 함수의 개념, 주요 유니버설 함수, 그리고 고급 수학 연산을 살펴보겠습니다.

1. 유니버설 함수(Ufunc)란?

NumPy의 유니버설 함수(Ufunc)는 배열의 각 요소에 대해 연산을 수행하는 벡터화된 함수입니다. 이는 반복문 없이 빠르게 연산을 수행할 수 있도록 설계되었습니다.

  • 벡터화된 계산을 지원하여 반복문을 대체합니다.
  • 빠른 성능과 간결한 코드 작성이 가능합니다.

2. 주요 유니버설 함수

1) 산술 연산 함수

유니버설 함수는 배열의 산술 연산을 간단하게 수행합니다.

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np

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

# 제곱근 계산
print(np.sqrt(arr))  # 출력: [1. 1.41421356 1.73205081 2.]

# 지수 계산
print(np.exp(arr))  # 출력: [  2.71828183   7.3890561   20.08553692  54.59815003]

# 로그 계산
print(np.log(arr))  # 출력: [0.         0.69314718 1.09861229 1.38629436]
2) 삼각 함수

삼각 함수는 수학 및 과학 계산에 유용합니다.

1
2
3
4
5
6
7
8
9
10
11
# 배열 생성
angles = np.array([0, np.pi / 2, np.pi])

# 사인 값
print(np.sin(angles))  # 출력: [0. 1. 0.]

# 코사인 값
print(np.cos(angles))  # 출력: [ 1. 0. -1.]

# 탄젠트 값
print(np.tan(angles))  # 출력: [ 0. 1. -0.]
3) 비교 연산

NumPy는 비교 연산을 통해 불리언 배열을 생성합니다.

1
2
3
4
5
arr = np.array([10, 20, 30, 40])

# 비교 연산
print(np.greater(arr, 25))  # 출력: [False False  True  True]
print(np.less_equal(arr, 20))  # 출력: [ True  True False False]

3. 고급 수학 연산

NumPy는 고급 수학 연산을 위한 함수를 제공합니다.

1) 선형대수 연산

선형대수 연산은 과학 계산에서 필수적인 기능입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 행렬 생성
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])

# 행렬 곱
print(np.dot(matrix1, matrix2))
# 출력:
# [[19 22]
#  [43 50]]

# 행렬의 역행렬
print(np.linalg.inv(matrix1))
# 출력:
# [[-2.   1. ]
#  [ 1.5 -0.5]]

# 행렬식 계산
print(np.linalg.det(matrix1))  # 출력: -2.0000000000000004
2) 통계 연산

NumPy는 고급 통계 계산을 지원합니다.

1
2
3
4
5
6
7
8
9
# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 백분위수 계산
print(np.percentile(arr, 50))  # 출력: 3.0

# 히스토그램 계산
print(np.histogram(arr, bins=3))
# 출력: (array([2, 2, 1]), array([1.        , 2.33333333, 3.66666667, 5.        ]))
3) 난수 생성

NumPy의 난수 생성은 데이터 분석에서 중요한 역할을 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 0~1 사이의 난수 생성
print(np.random.rand(3))  # 출력: [0.1234 0.5678 0.9101]

# 정규분포 난수 생성
print(np.random.normal(0, 1, size=(2, 2)))
# 출력: [[ 1.764  0.400]
#        [ 0.978  2.241]]

# 지정된 범위의 정수 난수 생성
print(np.random.randint(1, 10, size=(3, 3)))
# 출력:
# [[2 5 7]
#  [4 3 6]
#  [1 8 9]]

정리

  • NumPy의 유니버설 함수는 반복문 없이 빠르게 배열의 요소별 연산을 수행할 수 있습니다.
  • 고급 수학 연산은 선형대수, 통계, 난수 생성 등 다양한 기능을 포함하며, 데이터 분석과 과학 계산에 필수적입니다.
  • 유니버설 함수와 고급 연산을 잘 활용하면 복잡한 계산을 간단히 처리할 수 있습니다.

다음 글 예고:
NumPy의 데이터 처리 효율성을 높이는 “배열 비교 및 고급 활용”에 대해 알아보겠습니다!

This post is licensed under CC BY 4.0 by the author.