NumPy(Numerical Python)는 파이썬에서 과학 계산 및 데이터 처리를 위한 가장 강력한 라이브러리 중 하나입니다.
고성능 다차원 배열 객체와 다양한 수학적 함수들을 제공하여 데이터 분석, 머신러닝, 인공지능 등의 분야에서 필수 도구로 자리 잡고 있습니다.
이번 글에서는 NumPy의 핵심 개념과 주요 기능을 공부한 내용을 기록하며 공유하겠습니다.
1. NumPy란 무엇인가?
1.1 NumPy의 정의
NumPy는 고성능 다차원 배열과 행렬 연산을 제공하는 라이브러리 입니다.
이전 포스트에서 다룬 Panda와 Scikit-learn, TensorFlow와 같은 라이브러리의 기반으로 사용되며, 수치 데이터를 효율적으로 다룰 수 있도록 설계되었습니다.
1.2 NumPy의 주요 기능
- NumPy는 기본적으로 C언어로 구현되어 있습니다. - 속도가 빠르다.
- 다차원 배열 객체(NumPy 배열)
- 빠른 수학 연산 (백터 연산, 선형 대수 등)
- 배열 기반의 데이터 조작 (슬라이승, 정렬, 필터링)
- 다양한 수학 및 통계 함수 제공
2. NumPy 설치 및 기본 사용법
2.1 설치
NumPy를 설치하려면 아래 명령어를 실행하세요
pip install numpy
2.2 기본 임포트
import numpy as np
3. NumPy 배열 (ndarray)
NumPy 배열은 NumPy의 핵심 데이터 구조로, 다차원 배열을 효율적으로 처리할 수 있도록 설계되었습니다.
3.1 배열 생성
- 리스트를 사용하여 배열 생성 :
import numpy as np
array = np.array([1, 2, 3, 4, 5])
print(array) # [1 2 3 4 5]
- 다차원 배열 생성 :
matrix = np.array([[1, 2], [3, 4]])
print(matrix)
# 출력
[[1 2]
[3 4]]
3.2 배열 생성 함수
NumPy는 배열을 생성하는 다양한 내장 함수를 제공합니다.
- 0 과 1로 채워진 배열
zeros = np.zeros((2, 3))
ones = np.ones((2, 3))
print(zeros)
print(ones)
#출력
[[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1.]
[1. 1. 1.]]
- 연속된 숫자 배열
sequence = np.arange(0, 10, 2) # [0 2 4 6 8]
#파이썬의 range함수와 매우 흡사
- 랜덤 배열
random_array = np.random.rand(2, 3) # 2x3 랜덤 배열
4. NumPy 배열의 기본 연산
4.1 산술 연산
NumPy는 백터화된 연산을 지원하므로, 반복문 없이 빠르게 계산할 수 있습니다.
- 배열 간 연산 :
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [ 4 10 18]
- 스칼라 연산 :
print(a * 2) # [2 4 6]
4.2 통계 연산
배열의 합, 평균, 표준편차 계산:
data = np.array([1, 2, 3, 4, 5])
print(np.sum(data)) # 15
print(np.mean(data)) # 3.0
print(np.std(data)) # 1.4142135623730951
5. 배열 인덱싱과 슬라이싱
5.1 인덱싱
- 특정 요소 접근 :
array = np.array([10, 20, 30, 40])
print(array[2]) # 30
- 다차원 배열 접근 :
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix[0, 1]) # 2
5.2 슬라이싱
- 1차원 배열 :
array = np.array([10, 20, 30, 40, 50])
print(array[1:4]) # [20 30 40]
- 2차원 배열 :
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[:2, 1:]) # [[2 3]
# [5 6]]
6. 고급 기능
6.1 배열의 형태 변경
- 배열 크기 변경 :
array = np.arange(1, 7)
reshaped = array.reshape(2, 3)
print(reshaped)
#출력
[[1 2 3]
[4 5 6]]
6.2 배열의 결합과 분활
- 배열 결합 :
a = np.array([1, 2])
b = np.array([3, 4])
combined = np.concatenate((a, b))
print(combined) # [1 2 3 4]
- 배열 분할 :
array = np.array([1, 2, 3, 4, 5, 6])
split = np.split(array, 3)
print(split) # [array([1, 2]), array([3, 4]), array([5, 6])]
6.3 브로드캐스팅
NumPy는 서로 다른 크기의 배열 간 연산을 자동으로 처리합니다.
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
print(a + b)
#출력
[[11 22]
[13 24]]
7. 실용 예제
7.1 선형대수 연산
matrix = np.array([[1, 2], [3, 4]])
display(matrix)
inverse = np.linalg.inv(matrix)
display(inverse)
# 출력
array([[1, 2],
[3, 4]])
array([[-2. , 1. ],
[ 1.5, -0.5]])
7.2 데이터 정규화
data = np.array([10, 20, 30])
normalized = (data - np.min(data)) / (np.max(data) - np.min(data))
print(normalized) # [0. 0.5 1. ]
<참고>
- NumPy 배열과 파이썬의 리스트와 차이는 NumPy 배열은 리스트보다 빠르고 메모리 효율적이며, 벡터 연산과 같은 고급 연산을 지원한다.
- NumPy 에서 결측치를 처리하려면 'np.isnan()' 함수로 확인하고, 'np.nan_to_num()' 으로 Na 값을 채울 수 있다
요약
NumPy는 데이터 과학과 머신러닝의 기초를 쌓는 데 필수적인 라이브러리입니다.
다음 포스트에서는 Pandas를 사용하여 데이터를 분석하는 고급 기법을 공부하고 기록 예정입니다. 다음 포스트도 기대해 주세요!
'Data Analysis' 카테고리의 다른 글
Seaborn을 활용한 통계 시각화 기법: 데이터 통찰력을 얻는 방법 (2) | 2024.12.13 |
---|---|
Pandas와 Matplotlib/Seaborn을 활용한 데이터 시각화: 완벽 가이드 (2) | 2024.11.29 |
Python Pandas 완벽 가이드: 데이터 분석의 시작 (2) | 2024.11.27 |
선형대수 (2) (0) | 2024.07.18 |
선형대수 (1) (0) | 2024.07.16 |