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.